00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSNSPR_TCPSERVER_H
00020 #define CONEXUSNSPR_TCPSERVER_H
00021
00022 #include <conexus/endpointserver.h>
00023 #include <conexus/nspr_tcp.h>
00024
00025 namespace Conexus
00026 {
00027
00028 namespace NSPR
00029 {
00030
00036 class TCPServer: public Conexus::EndpointServer
00037 {
00038 protected:
00039
00040 TCPServer( uint32_t interface, uint16_t port );
00041
00042 TCPServer( const std::string& interface, uint16_t port );
00043
00044 public:
00045 IDIOSKOPOS_OBJECT( Conexus::NSPR::TCPServer );
00046
00047 typedef ConexusPointer<TCPServer> pointer;
00048
00049 static TCPServer::pointer create( uint16_t port = 0 );
00050
00051 static TCPServer::pointer create( uint32_t interface, uint16_t port );
00052
00053 static TCPServer::pointer create( const std::string& interface, uint16_t port );
00054
00055 virtual ~TCPServer();
00056
00057 virtual Conexus::IPv4::Address& local_interface();
00058
00059 virtual void set_local_interface( Conexus::IPv4::Address addr );
00060
00061 virtual void start();
00062 virtual void start( bool use_dispatcher );
00063 virtual void stop();
00064
00065 protected:
00066 TCP::pointer m_tcp_listener;
00067 Conexus::IPv4::Address m_local_interface;
00068
00069
00070 virtual void service_thread_main();
00071
00072
00073 };
00074
00075 }
00076
00077 }
00078
00079 #endif