00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSNSPRTCP_H
00020 #define CONEXUSNSPRTCP_H
00021
00022 #include <conexus/nspr_socket.h>
00023
00024 namespace Conexus {
00025
00026 namespace NSPR {
00027
00034 class TCP : public Socket {
00035 protected:
00036
00037 TCP( uint32_t interface, uint16_t port );
00038
00039 TCP( const std::string& interface, uint16_t port );
00040
00041 public:
00042 IDIOSKOPOS_OBJECT( Conexus::NSPR::TCP );
00043
00044 friend class TCPServer;
00045
00046 typedef ConexusPointer<TCP> pointer;
00047
00048 static TCP::pointer create( uint16_t port = 0 );
00049
00050 static TCP::pointer create( uint32_t interface, uint16_t port );
00051
00052 static TCP::pointer create( const std::string& interface, uint16_t port );
00053
00054 virtual ~TCP() throw();
00055
00056 void open() throw (open_exception);
00057
00058 virtual void connect() throw ( connect_exception );
00059 virtual void connect( Address& a ) throw ( connect_exception ) {
00060 Socket::connect( a );
00061 }
00062
00063 protected:
00064
00069 TCP( PRFileDesc* accepted_fd, bool );
00070
00071 static TCP::pointer create( PRFileDesc* accepted_fd, bool );
00072
00077 virtual ssize_t write_data( long int timeout, Data::const_pointer data ) throw ( write_exception );
00078
00085 virtual Data::pointer read_data( long int timeout, size_t s = 0 ) throw ( read_exception );
00086
00087 };
00088
00089 }
00090
00091 }
00092
00093 #endif