00001 00002 #ifndef socket_generic 00003 #define socket_generic 00004 00005 #include "API/Core/System/keep_alive.h" 00006 #include "API/Network/socket.h" 00007 #include "event_trigger_socket.h" 00008 00009 #ifndef WIN32 00010 #include <sys/socket.h> 00011 #include <netinet/in.h> 00012 #include <arpa/inet.h> 00013 #include <netdb.h> 00014 #else 00015 #include <windows.h> 00016 typedef int socklen_t; 00017 #endif 00018 00019 class CL_EventTrigger_Socket; 00020 00021 class CL_Socket_Generic : public CL_KeepAlive 00022 { 00023 // Static operations: 00024 public: 00025 static sockaddr_in create_sockaddr_in(const CL_IPAddress &address); 00026 00027 static CL_IPAddress create_ip_address(const sockaddr_in &addr_in); 00028 00029 // Construction: 00030 public: 00031 CL_Socket_Generic(); 00032 00033 virtual ~CL_Socket_Generic(); 00034 00035 // Attributes: 00036 public: 00037 int sock; 00038 00039 CL_EventTrigger_Socket *read, *write, *exception; 00040 00041 CL_Signal_v0 sig_read_triggered; 00042 00043 CL_Signal_v0 sig_write_triggered; 00044 00045 CL_Signal_v0 sig_exception_triggered; 00046 00047 // Operations: 00048 public: 00049 void add_ref(); 00050 00051 void release_ref(); 00052 00053 // Overridables: 00054 public: 00055 virtual CL_EventTrigger_Socket *create_read_trigger(); 00056 00057 virtual CL_EventTrigger_Socket *create_write_trigger(); 00058 00059 virtual CL_EventTrigger_Socket *create_exception_trigger(); 00060 00061 virtual void keep_alive(); 00062 00063 // Implementation: 00064 private: 00065 int ref_count; 00066 }; 00067 00068 #endif
1.2.6 written by Dimitri van Heesch,
© 1997-2001