00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef IPV4IPV4_TCPSERVER_H
00020 #define IPV4IPV4_TCPSERVER_H
00021
00022 #include <conexus/ipv4_address.h>
00023 #include <conexus/endpointserver.h>
00024 #include <conexus/socket.h>
00025
00038 namespace Conexus
00039 {
00040
00041 namespace IPv4
00042 {
00043
00049 class TCPServer: public Conexus::EndpointServer
00050 {
00051
00052 protected:
00053
00054 TCPServer( uint32_t address, uint16_t port );
00055
00056 TCPServer( const std::string& address, uint16_t port );
00057
00058 public:
00059 typedef ConexusPointer<TCPServer> pointer;
00060
00061 static pointer create( uint16_t port = 0 );
00062
00063 static pointer create( uint32_t address, uint16_t port );
00064
00065 static pointer create( const std::string& address, uint16_t port=0 );
00066
00067 virtual ~TCPServer();
00068
00069 virtual Address& local_address();
00070
00071 virtual void set_local_address( Address addr );
00072
00073 virtual void start();
00074 virtual void start( bool use_dispatcher );
00075 virtual void stop();
00076
00077 protected:
00078 Socket::pointer m_tcp_listener;
00079 Address m_local_address;
00080
00081
00082 virtual void service_thread_main();
00083
00084
00085 };
00086
00087 }
00088
00089 }
00090
00091 #endif