Factor out socket flag selection into GetBlockingFlagIfNeeded()
No real changes, just refactor wxProtocol ctor to use a new function that can be reused elsewhere too.
This commit is contained in:
		| @@ -225,6 +225,16 @@ public: | |||||||
|     bool IsNoWait() const { return ((m_flags & wxSOCKET_NOWAIT) != 0); } |     bool IsNoWait() const { return ((m_flags & wxSOCKET_NOWAIT) != 0); } | ||||||
|     wxSocketType GetType() const { return m_type; } |     wxSocketType GetType() const { return m_type; } | ||||||
|  |  | ||||||
|  |     // Helper returning wxSOCKET_NONE if non-blocking sockets can be used, i.e. | ||||||
|  |     // the socket is being created in the main thread and the event loop is | ||||||
|  |     // running, or wxSOCKET_BLOCK otherwise. | ||||||
|  |     // | ||||||
|  |     // This is an internal function used only by wxWidgets itself, user code | ||||||
|  |     // should decide if it wants blocking sockets or not and use the | ||||||
|  |     // appropriate style instead of using it (but wxWidgets has to do it like | ||||||
|  |     // this for compatibility with the original network classes behaviour). | ||||||
|  |     static int GetBlockingFlagIfNeeded(); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     friend class wxSocketClient; |     friend class wxSocketClient; | ||||||
|     friend class wxSocketServer; |     friend class wxSocketServer; | ||||||
|   | |||||||
| @@ -65,9 +65,7 @@ wxIMPLEMENT_ABSTRACT_CLASS(wxProtocol, wxObject); | |||||||
| wxProtocol::wxProtocol() | wxProtocol::wxProtocol() | ||||||
| #if wxUSE_SOCKETS | #if wxUSE_SOCKETS | ||||||
|     // Only use non blocking sockets if we can dispatch events. |     // Only use non blocking sockets if we can dispatch events. | ||||||
|     : wxSocketClient((wxIsMainThread() && wxApp::IsMainLoopRunning() |     : wxSocketClient(wxSocketClient::GetBlockingFlagIfNeeded() | wxSOCKET_WAITALL) | ||||||
|                         ? wxSOCKET_NONE |  | ||||||
|                         : wxSOCKET_BLOCK) | wxSOCKET_WAITALL) |  | ||||||
| #endif | #endif | ||||||
| { | { | ||||||
|     m_lastError = wxPROTO_NOERR; |     m_lastError = wxPROTO_NOERR; | ||||||
|   | |||||||
| @@ -25,6 +25,7 @@ | |||||||
| #include "wx/socket.h" | #include "wx/socket.h" | ||||||
|  |  | ||||||
| #ifndef WX_PRECOMP | #ifndef WX_PRECOMP | ||||||
|  |     #include "wx/app.h" | ||||||
|     #include "wx/object.h" |     #include "wx/object.h" | ||||||
|     #include "wx/string.h" |     #include "wx/string.h" | ||||||
|     #include "wx/intl.h" |     #include "wx/intl.h" | ||||||
| @@ -928,6 +929,14 @@ wxSocketError wxSocketBase::LastError() const | |||||||
|     return m_impl->GetError(); |     return m_impl->GetError(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* static */ | ||||||
|  | int wxSocketBase::GetBlockingFlagIfNeeded() | ||||||
|  | { | ||||||
|  |     return wxIsMainThread() && wxApp::IsMainLoopRunning() | ||||||
|  |             ? wxSOCKET_NONE | ||||||
|  |             : wxSOCKET_BLOCK; | ||||||
|  | } | ||||||
|  |  | ||||||
| // -------------------------------------------------------------------------- | // -------------------------------------------------------------------------- | ||||||
| // Basic IO calls | // Basic IO calls | ||||||
| // -------------------------------------------------------------------------- | // -------------------------------------------------------------------------- | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user