1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/private/socketevtdispatch.h 3// Purpose: wxSocketEventDispatcher class 4// Authors: Angel Vidal 5// Modified by: 6// Created: August 2006 7// Copyright: (c) Angel Vidal 8// RCS-ID: $Id: socketevtdispatch.h 43976 2006-12-14 14:13:57Z VS $ 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_PRIVATE_SOCKETEVTDISPATCH_H_ 13#define _WX_PRIVATE_SOCKETEVTDISPATCH_H_ 14 15#include "wx/defs.h" 16 17#if wxUSE_SOCKETS 18 19#include "wx/hash.h" 20 21// forward declarations 22class wxSocketEventDispatcherEntry; 23class GSocket; 24 25enum wxSocketEventDispatcherType 26{ 27 wxSocketEventDispatcherInput, 28 wxSocketEventDispatcherOutput 29}; 30 31class WXDLLIMPEXP_CORE wxSocketEventDispatcher : public wxHashTable 32{ 33protected: 34 wxSocketEventDispatcher() : wxHashTable(wxKEY_INTEGER) {} 35 36public: 37 // returns instance of the table 38 static wxSocketEventDispatcher& Get(); 39 40 virtual ~wxSocketEventDispatcher() 41 { 42 WX_CLEAR_HASH_TABLE(*this) 43 } 44 45 void RegisterCallback(int fd, wxSocketEventDispatcherType socketType, 46 GSocket* socket); 47 48 void UnregisterCallback(int fd, wxSocketEventDispatcherType socketType); 49 50 void RunLoop(int timeout = 0); 51 52private: 53 void AddEvents(fd_set* readset, fd_set* writeset); 54 55 int FillSets(fd_set* readset, fd_set* writeset); 56 57 wxSocketEventDispatcherEntry* FindEntry(int fd); 58 59private: 60 static wxSocketEventDispatcher *ms_instance; 61 62 friend class wxSocketEventDispatcherModule; 63}; 64 65#endif // wxUSE_SOCKETS 66 67#endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_ 68