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