X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ebbf7407644c407815de10284a49042f602101c1..5cbda74b6606482f5286a5599fc60f3f91995a52:/include/wx/socket.h diff --git a/include/wx/socket.h b/include/wx/socket.h index efc5652531..35370059e7 100644 --- a/include/wx/socket.h +++ b/include/wx/socket.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: socket.h +// Name: wx/socket.h // Purpose: Socket handling classes // Authors: Guilhem Lavaux, Guillermo Rodriguez Garcia // Modified by: @@ -93,6 +93,9 @@ enum wxSocketType }; +// event +class WXDLLIMPEXP_FWD_NET wxSocketEvent; +wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_NET, wxEVT_SOCKET, wxSocketEvent); // -------------------------------------------------------------------------- // wxSocketBase @@ -162,7 +165,7 @@ public: wxSocketFlags GetFlags() const { return m_flags; } void SetFlags(wxSocketFlags flags); - void SetTimeout(long seconds); + virtual void SetTimeout(long seconds); long GetTimeout() const { return m_timeout; } bool GetOption(int level, int optname, void *optval, int *optlen); @@ -176,11 +179,21 @@ public: void SetNotify(wxSocketEventFlags flags); void Notify(bool notify); - // initialize/shutdown the sockets (usually called automatically) - static bool IsInitialized(); + // initialize/shutdown the sockets (done automatically so there is no need + // to call these functions usually) + // + // should always be called from the main thread only so one of the cases + // where they should indeed be called explicitly is when the first wxSocket + // object in the application is created in a different thread static bool Initialize(); static void Shutdown(); + // check if wxSocket had been already initialized + // + // notice that this function should be only called from the main thread as + // otherwise it is inherently unsafe because Initialize/Shutdown() may be + // called concurrently with it in the main thread + static bool IsInitialized(); // Implementation from now on // -------------------------- @@ -261,14 +274,11 @@ private: wxSocketEventFlags m_eventmask; // which events to notify? wxSocketEventFlags m_eventsgot; // collects events received in OnRequest() - // the initialization count, wxSocket is initialized if > 0 - static size_t m_countInit; - friend class wxSocketReadGuard; friend class wxSocketWriteGuard; - DECLARE_NO_COPY_CLASS(wxSocketBase) + wxDECLARE_NO_COPY_CLASS(wxSocketBase); DECLARE_CLASS(wxSocketBase) }; @@ -288,7 +298,7 @@ public: bool WaitForAccept(long seconds = -1, long milliseconds = 0); - DECLARE_NO_COPY_CLASS(wxSocketServer) + wxDECLARE_NO_COPY_CLASS(wxSocketServer); DECLARE_CLASS(wxSocketServer) }; @@ -327,7 +337,7 @@ private: int m_initialRecvBufferSize; int m_initialSendBufferSize; - DECLARE_NO_COPY_CLASS(wxSocketClient) + wxDECLARE_NO_COPY_CLASS(wxSocketClient); DECLARE_CLASS(wxSocketClient) }; @@ -356,7 +366,7 @@ public: */ private: - DECLARE_NO_COPY_CLASS(wxDatagramSocket) + wxDECLARE_NO_COPY_CLASS(wxDatagramSocket); DECLARE_CLASS(wxDatagramSocket) }; @@ -379,6 +389,7 @@ public: void *GetClientData() const { return m_clientData; } virtual wxEvent *Clone() const { return new wxSocketEvent(*this); } + virtual wxEventCategory GetEventCategory() const { return wxEVT_CATEGORY_SOCKET; } public: wxSocketNotify m_event; @@ -391,7 +402,7 @@ public: typedef void (wxEvtHandler::*wxSocketEventFunction)(wxSocketEvent&); #define wxSocketEventHandler(func) \ - (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxSocketEventFunction, &func) + wxEVENT_HANDLER_CAST(wxSocketEventFunction, func) #define EVT_SOCKET(id, func) \ wx__DECLARE_EVT1(wxEVT_SOCKET, id, wxSocketEventHandler(func))