MACE  1.0.0
 All Classes Namespaces Files Functions Variables Enumerations Defines
libs/rpc/include/mace/rpc/json/detail/tcp_server_base.hpp
00001 #ifndef _MACE_RPC_JSON_TCP_SERVER_BASE_HPP_
00002 #define _MACE_RPC_JSON_TCP_SERVER_BASE_HPP_
00003 #include <mace/cmt/thread.hpp>
00004 #include <mace/stub/ptr.hpp>
00005 #include <boost/fusion/support/deduce_sequence.hpp>
00006 #include <mace/rpc/json/value_io.hpp>
00007 #include <mace/rpc/json/connection.hpp>
00008 
00009 namespace mace { namespace rpc { namespace json {
00010   
00011   namespace detail {
00012     class tcp_server_base {
00013       public:
00014         struct session_creator {
00015             virtual ~session_creator(){}
00016             virtual boost::any init_connection( const rpc::json::connection::ptr& ) = 0;
00017         };
00018 
00019 
00020         tcp_server_base( session_creator* sc, uint16_t port, mace::cmt::thread* t );
00021         ~tcp_server_base();
00022         mace::cmt::thread* get_thread()const;
00023 
00024       private:
00025         class tcp_server_base_private* my;
00026     };
00027   } // namesapce detal
00028 
00029 } } } // mace::rpc::json
00030 
00031 #endif // _MACE_RPC_JSON_TCP_SERVER_BASE_HPP_