Listing 7

int main()
{
   HANDLE os_handle = open_os_handle("\\\\.\\pipe\\p1");
   marshal::handle_buffer_t two_way_transport(os_handle);
   marshal::raw_iostream encoder(two_way_transport);
   // Configure with a debugging stream
   proxy_t<marshal::caller, marshal::raw_ostream,
      marshal::raw_istream, std::ostream> proxy;
   proxy.bind(encoder, encoder, std::clog);
   // Start marking remote function calls
   int retval = proxy->strlen("hello");
   std::vector<std::string> titles = proxy->get_titles("Koenig");
   std::string home_page = proxy->get_website();
   return EXIT_SUCCESS;
}