Cleanup of wxSocket::_Wait():

- Rename to DoWait() to avoid symbols starting with underscores.
 - Added comments explaining how does it work.
 - Remove the pointless timeout manipulations: GSocket::Select() doesn't
   use timeout (any more?) anyhow.

Also pass GSOCK_LOST_FLAG to DoWait() from WaitForWrite() for the same reasons
it is done in WaitForRead().


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56275 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-10-13 13:00:49 +00:00
parent 551266a969
commit 60ee017274
2 changed files with 120 additions and 113 deletions

View File

@@ -137,12 +137,26 @@ public:
wxSocketBase& Write(const void *buffer, wxUint32 nbytes);
wxSocketBase& WriteMsg(const void *buffer, wxUint32 nbytes);
void InterruptWait() { m_interrupt = true; }
// all Wait() functions wait until their condition is satisfied or the
// timeout expires; if seconds == -1 (default) then m_timeout value is used
//
// it is also possible to call InterruptWait() to cancel any current Wait()
// wait for anything at all to happen with this socket
bool Wait(long seconds = -1, long milliseconds = 0);
// wait until we can read from or write to the socket without blocking
// (notice that this does not mean that the operation will succeed but only
// that it will return immediately)
bool WaitForRead(long seconds = -1, long milliseconds = 0);
bool WaitForWrite(long seconds = -1, long milliseconds = 0);
// wait until the connection is terminated
bool WaitForLost(long seconds = -1, long milliseconds = 0);
void InterruptWait() { m_interrupt = true; }
wxSocketFlags GetFlags() const { return m_flags; }
void SetFlags(wxSocketFlags flags);
void SetTimeout(long seconds);
@@ -182,7 +196,17 @@ private:
// low level IO
wxUint32 _Read(void* buffer, wxUint32 nbytes);
wxUint32 _Write(const void *buffer, wxUint32 nbytes);
bool _Wait(long seconds, long milliseconds, wxSocketEventFlags flags);
// wait until the given flags are set for this socket or the given timeout
// (or m_timeout) expires
//
// notice that GSOCK_LOST_FLAG is always taken into account but the return
// value depends on whether it is included in flags or not: if it is, and the
// connection is indeed lost, true is returned, but if it isn't then the
// function returns false in this case
//
// false is always returned if we returned because of the timeout expiration
bool DoWait(long seconds, long milliseconds, wxSocketEventFlags flags);
// pushback buffer
void Pushback(const void *buffer, wxUint32 size);
@@ -203,7 +227,7 @@ private:
bool m_closed; // was the other end closed?
// (notice that m_error is also set then)
wxUint32 m_lcount; // last IO transaction size
unsigned long m_timeout; // IO timeout value
unsigned long m_timeout; // IO timeout value in seconds
wxList m_states; // stack of states
bool m_interrupt; // interrupt ongoing wait operations?
bool m_beingDeleted; // marked for delayed deletion?