We first looked around what was already there:
- QuteXR: a very good lib implementing the server and client side. Sadly only Qt 3. Has many features and so wasn't easy to port over to Qt4 in the short time we had for our Projects.
- KRPC: only implements the client side. But we could use some code here.
- QxtXmlRpc: I found out about this one only recently. And also only implements the client.
So we had to create something new. Luckily we were able to use some code from KRPC and had some inspiration from QuteXR.
To demonstrate how easy it is to use libmaia: two examples.
Let's create a Server first using these simple lines of code:
QLineEdit *sometext = new QLineEdit(this);
MaiaXmlRpcServer *server = new MaiaXmlRpcServer(8080, this);
server->addMethod("examples.displaytext", sometext, "setText");
First we create a QLineEdit for demonstration purpose.
Then we start the XmlRpc Server on port 8080.
In line 3 we register the Method "examples.displaytext" to the QLineEdits slot "setText".
You can now remotely call "examples.displaytext" with a String as parameter and change the content of your LineEdit.
Now create a client:
MaiaXmlRpcClient *rpc = new MaiaXmlRpcClient(QUrl("http://localhost:8080/RPC2"), this);
this, SLOT(testResponse(QVariant &)),
this, SLOT(testFault(int, const QString &)));
Here we create the client object by passing the server URL to the constructor.
Calling a Method is as easy as passing its name, the arguments and two slots to the "call" method.
The first of the two slots is used to handle the response, the second can be used to catch errors.
Looks easy to get started with? Right, so clone directly from github here:
git clone https://github.com/wiedi/libmaia.git
You'll also find further examples there.
Have fun with it :)