ssl/ipv6_tcp.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUS_SSL_IPV6TCP_H
00020 #define CONEXUS_SSL_IPV6TCP_H
00021
00022 #include <conexus/ipv6_tcp.h>
00023 #include <conexus-ssl/ssl.h>
00024
00025 namespace Conexus
00026 {
00027
00028 namespace SSL
00029 {
00030
00031 namespace IPv6
00032 {
00033
00037 class TCP : public Conexus::IPv6::TCP, public Conexus::SSL::SSL
00038 {
00039 friend class TCPServer;
00040
00041 TCP( Context::pointer context, uint32_t address, uint16_t port );
00042
00043 TCP( Context::pointer context, const struct in6_addr& address=in6addr_any, uint16_t port=0 );
00044
00045 TCP( Context::pointer context, const std::string& address, uint16_t port );
00046
00047 public:
00048 typedef ConexusPointer<TCP> pointer;
00049
00050 static pointer create( Context::pointer context, uint16_t port = 0 );
00051
00052 static pointer create( Context::pointer context, uint32_t address, uint16_t port );
00053
00054 static pointer create( Context::pointer context, const struct in6_addr& address, uint16_t port=0 );
00055
00056 static pointer create( Context::pointer context, const std::string& address, uint16_t port=0 );
00057
00058 ~TCP() throw ();
00059
00060 virtual void open() throw ( open_exception );
00061
00062 virtual void connect() throw ( connect_exception );
00063
00064 virtual void connect( const Conexus::IPv6::Address& a ) throw ( connect_exception );
00065
00066 protected:
00071 TCP ( Context::pointer context, int accepted_fd, bool );
00072
00073 static TCP::pointer create ( Context::pointer context, int accepted_fd, bool );
00074
00075 virtual size_t write_data( const Data data, Timeout timeout ) throw ( write_exception );
00076
00077 virtual Data read_data( size_t size, Timeout timeout ) throw ( read_exception );
00078
00079 private:
00085 bool m_want_write;
00086
00092 bool m_want_read;
00093
00094
00095 };
00096
00097 }
00098
00099 }
00100
00101 }
00102
00103 #endif