00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef IPV6IPV6_TCPSERVER_H
00020 #define IPV6IPV6_TCPSERVER_H
00021
00022 #include <conexus/ipv6_address.h>
00023 #include <conexus/endpointserver.h>
00024 #include <conexus/socket.h>
00025
00038 namespace Conexus
00039 {
00040
00041 namespace IPv6
00042 {
00043
00047 class TCPServer: public Conexus::EndpointServer
00048 {
00049 public:
00050 typedef boost::shared_ptr<TCPServer> pointer;
00051
00052 TCPServer(uint16_t port=0);
00053
00054 static TCPServer::pointer create(uint16_t port=0);
00055
00056 virtual ~TCPServer();
00057
00058 virtual Address& local_interface();
00059
00060 virtual void set_local_interface(Address addr);
00061
00062 virtual void start();
00063 virtual void start(bool use_dispatcher);
00064 virtual void stop();
00065
00066 virtual const std::string& object_type() { static std::string s("Conexus::IPv6::TCPServer"); return s; }
00067
00068 protected:
00069 Conexus::Socket m_tcp_listener;
00070 Address m_local_interface;
00071
00072
00073 virtual void service_thread_main();
00074
00075
00076 };
00077
00078 }
00079
00080 }
00081
00082 #endif