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 public:
00036 friend class TCPServer;
00037
00038 typedef ConexusPointer<TCP> pointer;
00039
00040 TCP( uint16_t port = 0 );
00041
00042 static TCP::pointer create( uint16_t port = 0 );
00043
00044 virtual ~TCP() throw();
00045
00046 void open() throw (open_exception);
00047
00052 virtual ssize_t write( const void* data, size_t size ) throw ( write_exception );
00053
00060 virtual Data::pointer read( size_t s = -1 ) throw ( read_exception );
00061
00062 virtual void connect() throw ( connect_exception );
00063 virtual void connect( Address& a ) throw ( connect_exception ) {
00064 Socket::connect( a );
00065 }
00066
00067 virtual const std::string& object_type() {
00068 static std::string s( "Conexus::NSPR::TCP" );
00069 return s;
00070 }
00071
00072 protected:
00073
00078 TCP( PRFileDesc* accepted_fd, bool );
00079
00080 static TCP::pointer create( PRFileDesc* accepted_fd, bool );
00081
00082 };
00083
00084 }
00085
00086 }
00087
00088 #endif