With the merge of RPC_CXX code, MIDAS RPC can now return data of arbitrary large size and I am
proceeding to update the corresponding mjsonrpc interface.
If you use JRPC and BRPC in the tmfe framework, you need to do nothing, the updated RPC handlers
are already tested and merged, the only effect is that large data returned by HandleRpc() and
HandleBinaryRpc() will no longer be truncated.
If you use your own handlers for JRPC and BRPC, please add the RPC handlers as shown at the end
of this message. There is no need to delete/remove the old RPC handlers.
To avoid unexpected breakage, the new code is not yet enabled by default, but you can start
using it immediately by replacing the mjsonrpc call:
mjsonrpc_call("jrpc", ...
with
mjsonrpc_call("jrpc_cxx", ...
ditto for "brpc", see resources/example.html for complete code.
After migration is completed, if you have some old frontends where you cannot add the new RPC
handlers, you can still call them using the "jrpc_old" and "brpc_old" mjsonrpc calls.
I will cut-over the default "jrpc" and "brpc" calls to the new RPC_CXX in about a month or so.
If you need more time, please let me know.
K.O.
Register the new RPCs:
cm_register_function(RPC_JRPC_CXX, rpc_cxx_callback);
cm_register_function(RPC_BRPC_CXX, binary_rpc_cxx_callback);
and add the handler functions: (see tmfe.cxx for full example)
static INT rpc_cxx_callback(INT index, void *prpc_param[])
{
const char* cmd = CSTRING(0);
const char* args = CSTRING(1);
std::string* pstr = CPSTDSTRING(2);
*pstr = "my return data";
return RPC_SUCCESS;
}
static INT binary_rpc_cxx_callback(INT index, void *prpc_param[])
{
const char* cmd = CSTRING(0);
const char* args = CSTRING(1);
std::vector<char>* pbuf = CPSTDVECTOR(2);
pbuf->clear();
pbuf->push_back(my return data);
return RPC_SUCCESS;
}
K.O. |