We have a C++ API with 3 classes, which only use POD types and std::strings to pass arguments: when complex objects have to be passed, we serialize them with JSON (each JSON message has an associated JSON schema).
Most of the methods are synchronous, with 3 exceptions (for these three, there is a facility to define callbacks). Additionally, two synchronous methods take as parameter a file name and output some data (the first one a binary file, and the second one a text file).
The API is configured to be statically linked with a C++ driver to obtain a local, monolithic application.
Now we need to refactor the API and the driver into a client-server application, using JSON over WebSockets as the RPC mechanism (to get a background, read this [url removed, login to view]). All calls will then be asynchronous by default over the communication channel, but the client-side API only the three that already are asynchronous will need to be exposed as such; for all the others, hide the callback in the client-side stub implementation.
Both the server and the client should be console applications written with Qt 5.2 + QJsonRpc & QWebSockets.
Our preferred development environment is 32-bit Debian 8 (Jessie); you can use other platforms if you wish.
Attached you will find the header files, the C++ test driver and the JSON schemas. On project award, we will supply the implementation in source code form so that you can throughly test.
Let me know if there are questions (I **do** expect questions).
5 freelancers are bidding on average $689 for this job
Dear sir! I'm very skilled C/C++ programmer. Familiar with JSON, QT, and developed applications using JSON format for communication with servers on iOS and PC. I can do it perfectly.