]> git.saurik.com Git - wxWidgets.git/commitdiff
let's see it it works now...
authorGuillermo Rodriguez Garcia <guille@iies.es>
Wed, 9 Feb 2000 08:54:56 +0000 (08:54 +0000)
committerGuillermo Rodriguez Garcia <guille@iies.es>
Wed, 9 Feb 2000 08:54:56 +0000 (08:54 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/socket.cpp

index 330868a1782b6f58b7e8579b14e37ca2a2a5e96e..078079063b3573717a6a55e8afcbce5d1a18384c 100644 (file)
@@ -635,8 +635,7 @@ void wxSocketBase::RestoreState()
 //
 // XXX: Should it honour the wxSOCKET_BLOCK flag ?
 //
-bool wxSocketBase::_Wait(long seconds,
-                         long milliseconds,
+bool wxSocketBase::_Wait(long seconds, long milliseconds,
                          wxSocketEventFlags flags)
 {
   GSocketEventFlags result;
@@ -684,11 +683,6 @@ bool wxSocketBase::_Wait(long seconds,
   {
     result = GSocket_Select(m_socket, flags | GSOCK_LOST_FLAG);
 
-    // The order in which we check events is important; in particular,
-    // GSOCKET_LOST events should be checked last (there might be still
-    // data to read in the incoming queue even after the peer has closed
-    // the connection).
-
     // Incoming connection (server) or connection established (client)
     if (result & GSOCK_CONNECTION_FLAG)
     {
@@ -698,7 +692,6 @@ bool wxSocketBase::_Wait(long seconds,
       return TRUE;
     }
 
-    // Input and output
     if ((result & GSOCK_INPUT_FLAG) || (result & GSOCK_OUTPUT_FLAG))
     {
       timer.Stop();
@@ -709,8 +702,7 @@ bool wxSocketBase::_Wait(long seconds,
     if (result & GSOCK_LOST_FLAG)
     {
       timer.Stop();
-      Close();
-      return TRUE;
+      return TRUE;  // XXX: should be FALSE if !(flags & GSOCK_LOST_FLAG) !
     }
 
     // Wait more?
@@ -833,42 +825,29 @@ void wxSocketBase::OnRequest(wxSocketNotify req_evt)
 
   // dbg("Entering OnRequest (evt %d)\n", req_evt);
 
-  switch (req_evt)
+  // This duplicates some code in _Wait(), but this doesn't
+  // hurt. It has to be here because we don't know whether
+  // WaitXXX will be used, and it has to be in _Wait as well
+  // because the event might be a bit delayed.
+  //
+  if (req_evt == wxSOCKET_CONNECTION)
+  {
+    m_establishing = FALSE;
+    m_connected = TRUE;
+  }
+  else if (req_evt == wxSOCKET_INPUT)
   {
-    // This duplicates some code in _Wait(), but this doesn't hurt.
-    // It has to be here because we don't know whether the Wait()
-    // functions will be used, and it has to be in _Wait as well
-    // because the event might be a bit delayed.
-    //
-    // The order in which we check events is important; in particular,
-    // GSOCKET_LOST events should be checked last (there might be still
-    // data to read in the incoming queue even after the peer has
-    // closed the connection).
-
-    case wxSOCKET_CONNECTION :
-      m_establishing = FALSE;
-      m_connected = TRUE;
-      break;
-
     // If we are in the middle of a R/W operation, do not
     // propagate events to users. Also, filter 'late' events
     // which are no longer valid.
     //
-    case wxSOCKET_INPUT:
-      if (m_reading || !GSocket_Select(m_socket, GSOCK_INPUT_FLAG))
-        return;
-      else
-        break;
-
-    case wxSOCKET_OUTPUT:
-      if (m_writing || !GSocket_Select(m_socket, GSOCK_OUTPUT_FLAG))
-        return;
-      else
-        break;
-
-    case wxSOCKET_LOST:
-      Close();
-      break;
+    if (m_reading || !GSocket_Select(m_socket, GSOCK_INPUT_FLAG))
+      return;
+  }
+  else if (req_evt == wxSOCKET_OUTPUT)
+  {
+    if (m_writing || !GSocket_Select(m_socket, GSOCK_OUTPUT_FLAG))
+      return;
   }
 
   if (((m_neededreq & flag) == flag) && m_notify_state)
@@ -1078,7 +1057,6 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool wait)
   if (IsConnected())
     Close();
 
-  // This should never happen.
   if (m_socket)
     GSocket_destroy(m_socket);