C:/Development/boost_sandbox/rpc/boost/rpc/server.hpp

00001 // Copyright Stjepan Rajko 2007. Use, modification and
00002 // distribution is subject to the Boost Software License, Version
00003 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
00004 // http://www.boost.org/LICENSE_1_0.txt)
00005 
00006 #ifndef BOOST_RPC_SERVER_HPP
00007 #define BOOST_RPC_SERVER_HPP
00008 
00009 #include <boost/rpc/detail/threaded_service.hpp>
00010 #include <boost/ptr_container/ptr_vector.hpp>
00011 #include <boost/rpc/registry_server.hpp>
00012 
00013 namespace boost {
00014 namespace rpc {
00015 
00017 
00020 template<typename Registry, typename Acceptor>
00021 class server : public detail::threaded_service
00022 {
00023 public:
00025 
00029     server(Registry &reg, int port)
00030         : acceptor(service, port, boost::bind(&server<Registry, Acceptor>::connected, this, _1)),
00031         registry_(reg)
00032     {
00033         start_service_thread();
00034     }
00035     ~server()
00036     {
00037         stop_service_thread();
00038     }
00039 private:
00040     void connected(std::auto_ptr<boost::asio::ip::tcp::socket> socket_ptr)
00041     {
00042         servers.push_back(new registry_server<Registry>(registry_,
00043             boost::shared_ptr<boost::asio::ip::tcp::socket>(socket_ptr)));
00044     }
00045 
00046     Acceptor acceptor;
00047 
00048     Registry &registry_;
00049     boost::ptr_vector<registry_server<Registry> > servers;
00050 };
00051 
00052 } // namespace rpc
00053 } // namespace boost
00054 
00055 #endif // BOOST_RPC_SERVER_HPP

Generated on Sun May 20 15:47:56 2007 by  doxygen 1.5.2