00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUS_IPV4TCP_H
00020 #define CONEXUS_IPV4TCP_H
00021
00022 #include <conexus/ipv4_ip.h>
00023
00040 namespace Conexus
00041 {
00042
00043 namespace IPv4
00044 {
00045
00052 class TCP : public IP
00053 {
00054 public:
00055 friend class TCPServer;
00056
00057 typedef ConexusPointer<TCP> pointer;
00058
00059 TCP(uint16_t port=0);
00060
00061 static TCP::pointer create(uint16_t port=0);
00062
00063 virtual ~TCP() throw();
00064
00065 virtual ssize_t input_available();
00066
00070 int pending_output_size();
00071
00072 virtual void connect() throw (connect_exception);
00073 virtual void connect(Address& a) throw (connect_exception)
00074 {
00075 Socket::connect(a);
00076 }
00077
00078 virtual const std::string& object_type() { static std::string s("Conexus::IPv4::TCP"); return s; }
00079
00080 protected:
00081
00086 TCP(int accepted_fd, bool);
00087
00088 static TCP::pointer create(int accepted_fd, bool);
00089
00090 virtual void on_local_interface_changed(unsigned which);
00091 virtual void on_remote_address_changed(unsigned which);
00092
00097 virtual ssize_t write_data(long int timeout, Data::const_pointer data) throw (write_exception);
00098
00105 virtual Data::pointer read_data(long int timeout, size_t s = 0) throw (read_exception);
00106
00107 };
00108
00109 }
00110
00111 }
00112
00113 #endif