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 public:
00052 typedef boost::shared_ptr<TCPServer> pointer;
00053
00054 TCPServer(uint16_t port=0);
00055
00056 static TCPServer::pointer create(uint16_t port=0);
00057
00058 virtual ~TCPServer();
00059
00060 virtual Address& local_interface();
00061
00062 virtual void set_local_interface(Address addr);
00063
00064 virtual void start();
00065 virtual void start(bool use_dispatcher);
00066 virtual void stop();
00067
00068 virtual const std::string& object_type() { static std::string s("Conexus::IPv4::TCPServer"); return s; }
00069
00070 protected:
00071 Conexus::Socket m_tcp_listener;
00072 Address m_local_interface;
00073
00074
00075 virtual void service_thread_main();
00076
00077
00078 };
00079
00080 }
00081
00082 }
00083
00084 #endif