![]() |
EventHandler.hGo to the documentation of this file.00001 00005 /* 00006 Copyright (C) 2005,2007 Anders Hedstrom 00007 00008 This library is made available under the terms of the GNU GPL. 00009 00010 If you would like to use this library in a closed-source application, 00011 a separate license agreement is available. For information about 00012 the closed-source license agreement for the C++ sockets library, 00013 please visit http://www.alhem.net/Sockets/license.html and/or 00014 email license@alhem.net. 00015 00016 This program is free software; you can redistribute it and/or 00017 modify it under the terms of the GNU General Public License 00018 as published by the Free Software Foundation; either version 2 00019 of the License, or (at your option) any later version. 00020 00021 This program is distributed in the hope that it will be useful, 00022 but WITHOUT ANY WARRANTY; without even the implied warranty of 00023 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00024 GNU General Public License for more details. 00025 00026 You should have received a copy of the GNU General Public License 00027 along with this program; if not, write to the Free Software 00028 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00029 */ 00030 #ifndef _SOCKETS_EventHandler_H 00031 #define _SOCKETS_EventHandler_H 00032 00033 #include "sockets-config.h" 00034 #include "SocketHandler.h" 00035 #include "IEventHandler.h" 00036 00037 #ifdef SOCKETS_NAMESPACE 00038 namespace SOCKETS_NAMESPACE { 00039 #endif 00040 00041 00042 class StdLog; 00043 class IEventOwner; 00044 class Event; 00045 class TcpSocket; 00046 00049 class EventHandler : public SocketHandler,public IEventHandler 00050 { 00051 public: 00052 EventHandler(StdLog * = NULL); 00053 EventHandler(Mutex&,StdLog * = NULL); 00054 ~EventHandler(); 00055 00056 bool GetTimeUntilNextEvent(struct timeval *tv); 00057 void CheckEvents(); 00058 long AddEvent(IEventOwner *from,long sec,long usec); 00059 void ClearEvents(IEventOwner *from); 00060 void RemoveEvent(IEventOwner *from,long eid); 00061 00063 void EventLoop(); 00065 void SetQuit(bool = true); 00066 00067 void Add(Socket *); 00068 00069 private: 00070 EventHandler(const EventHandler& ) {} // copy constructor 00071 EventHandler& operator=(const EventHandler& ) { return *this; } // assignment operator 00072 std::list<Event *> m_events; 00073 bool m_quit; 00074 TcpSocket *m_socket; 00075 port_t m_port; 00076 }; 00077 00078 00079 00080 #ifdef SOCKETS_NAMESPACE 00081 } 00082 #endif 00083 00084 #endif // _SOCKETS_EventHandler_H |