00001
00002 #ifdef WIN32
00003 #pragma warning (disable:4786)
00004 #endif
00005
00006 #include "event_trigger_socket.h"
00007 #include "socket_generic.h"
00008
00010
00011
00012 CL_EventTrigger_Socket::CL_EventTrigger_Socket(CL_Socket_Generic *sock, Type type)
00013 : sock(sock), type(type)
00014 {
00015 sock->add_ref();
00016 start_listen();
00017 }
00018
00019 CL_EventTrigger_Socket::~CL_EventTrigger_Socket()
00020 {
00021 switch (type)
00022 {
00023 case read: socket_select.remove_read(this); break;
00024 case write: socket_select.remove_write(this); break;
00025 case exception: socket_select.remove_exception(this); break;
00026 }
00027
00028 sock->release_ref();
00029 }
00030
00032
00033
00035
00036
00038
00039
00040 void CL_EventTrigger_Socket::start_listen()
00041 {
00042 reset();
00043 switch (type)
00044 {
00045 case read: socket_select.listen_read(this); break;
00046 case write: socket_select.listen_write(this); break;
00047 case exception: socket_select.listen_exception(this); break;
00048 }
00049 }
00050
00051 CL_SocketSelect CL_EventTrigger_Socket::socket_select;