$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: srajko_at_[hidden]
Date: 2007-05-19 13:42:58
Author: srajko
Date: 2007-05-19 13:42:58 EDT (Sat, 19 May 2007)
New Revision: 4137
URL: http://svn.boost.org/trac/boost/changeset/4137
Log:
rpc version 0.1
Text files modified: 
   sandbox/rpc/libs/rpc/example/rpc_example.cpp |    32 ++++++++++++++++++--------------        
   1 files changed, 18 insertions(+), 14 deletions(-)
Modified: sandbox/rpc/libs/rpc/example/rpc_example.cpp
==============================================================================
--- sandbox/rpc/libs/rpc/example/rpc_example.cpp	(original)
+++ sandbox/rpc/libs/rpc/example/rpc_example.cpp	2007-05-19 13:42:58 EDT (Sat, 19 May 2007)
@@ -64,18 +64,28 @@
 
     // here, since the returned call handler is stored in an acknowledgement,
     // upon completion the server will marshal back only a confirmation of the completion.
-    rpc::acknowledgement_ptr handler = client(call_nothing);
-    BOOST_CHECK_NO_THROW(handler->completion().get());
+    rpc::acknowledgement_ptr ack = client(call_nothing);
+    BOOST_CHECK_NO_THROW(ack->completion().get());
 
     // embed the function id and parameter for an int (int) call
     rpc::call<std::string, int (int)> call_inc__1("inc",  1);
-    // here, the returned call handler is stored in a proper handler, which can be used
-    // to get the return value
-    // since the call includes an "out" parameter, everything gets marshalled
-    // back no matter what.
+    // 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, we can get the return value
     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);
 
     int i = 1;
     // embed the function id and parameters for a void (int &) call
@@ -88,14 +98,8 @@
     // embed the function id and parameter for an int (int, int) call
     rpc::call<std::string, int (int, int)> call_add2__5_6("add2",  5, 6);
     // handler returners are imlplicitly convertible to futures, which will carry the returned value
-    boost::future<int> result = client(call_add2__5_6);
-
-    BOOST_CHECK_EQUAL(result, 11);
-
-    // 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);
+    boost::future<int> result_add = client(call_add2__5_6);
+    BOOST_CHECK_EQUAL(result_add, 11);
 
     // this call sends the "in" value of an "in/out" paramater through a future (messy)
     boost::promise<int> prom;