[rpc] version 0.1 of remote procedure call library using futures posted

Hello, I have packed up and posted the most recent iteration of the remote procedure call library. Docs and code available at: http://dancinghacker.com/code/rpc/ It is also available from the boost sandbox under /rpc The major improvements are: * futures are now used to handle return values and "out" parameters. this allows the rpc library execute all of the calls asynchronously, with the futures interface allowing the user to decide whether the call indeed behaves asynchronously (by taking all the returned values into proper futures) or behaves synchronously (either by storing a return value into a non-future variable, where the future->variable cast will block until the future is set, or by sending a non-future variable as an "in/out" parameter) * what gets to be marshaled back is completely determined by how the call is made, rather than having to be specified explicitly: // embed the function id and parameter for an int (int) call rpc::call<std::string, int (int)> call_inc__1("inc", 1); // if the returned handler is ignored, nothing is marshaled back: client(call_inc__1); // if the returned handler is stored in an acknowledgement, only a confirmation of completion // is marshaled back. ack = client(call_inc__1); BOOST_CHECK_NO_THROW(ack->completion().get()); // if the returned handler is stored in a proper handler, the return value will be marshaled back rpc::async_returning_handler<int>::ptr handler_int = client(call_inc__1); boost::future<int> future_int(handler_int->return_promise()); BOOST_CHECK_EQUAL(future_int, 2); // handler returners are imlplicitly convertible to futures, which will carry the returned value boost::future<int> result_inc = client(call_inc__1); BOOST_CHECK_EQUAL(result_inc, 2); // handler returners are also convertible to values, which immediately // get assigned the value of the return value future, making the call synchronous int inced1 = client(call_inc__1); BOOST_CHECK_EQUAL(inced1, 2); More examples are in the HTML docs. Any feedback is welcome! Thanks, Stjepan P.S. I contacted the author of the RCF library (http://www.codeproject.com/threads/Rcf_Ipc_For_Cpp.asp) to see if he wants to join efforts in making a boosty rpc lib, but unfortunatelly he is too busy...
participants (1)
-
Stjepan Rajko