00001 #ifndef UPP_TCPC_HPP_SENTRY 00002 #define UPP_TCPC_HPP_SENTRY 00003 00004 #include "sue_inet.hpp" 00005 00007 00025 class SUETcpClientSession : public SUEInetDuplexSession { 00027 char *ipaddr; 00029 int ipport; 00031 char *local_ipaddr; 00033 int local_ipport; 00034 00036 bool connection_in_progress; 00037 public: 00038 const char *InspectAddr() const { return ipaddr; } 00039 int InspectPort() const { return ipport; } 00040 const char *InspectLocalAddr() const { return local_ipaddr; } 00041 int InspectLocalPort() const { return local_ipport; } 00042 00044 00062 SUETcpClientSession(const char *ipaddr, int ipport, 00063 int timeout, const char *greeting = 0, 00064 const char *local_ip = 0, int localport = 0); 00066 virtual ~SUETcpClientSession(); 00067 00069 00075 bool Up(SUEEventSelector *a_selector); 00076 00078 00082 bool Up(SUEEventSelector *a_selector, 00083 const char *src_ipaddr, int src_port); 00084 00085 00087 00089 void Down() { Shutdown(); } 00090 00092 00102 virtual void HandleConnectionFailure() { Shutdown(); } 00103 00104 virtual void HandleNewInput() = 0; 00105 00106 //virtual void HandleSessionTimeout(); 00107 //virtual void HandleRemoteClosing(); 00108 //virtual void HandleReadError(); 00109 00110 //virtual void ShutdownHook(); 00111 00112 private: 00113 virtual bool WantWrite() const; 00114 virtual void FdHandle(bool a_r, bool a_w, bool a_ex); 00115 }; 00116 00117 00118 #endif