private void Send_Completion(object sender, SocketAsyncEventArgs e) { Send_Process(e); if (m_Disposing) { return; } if (m_CoalesceSleep >= 0) { Thread.Sleep(m_CoalesceSleep); } SendQueue.Gram gram; lock ( m_SendQueue ) { gram = m_SendQueue.Dequeue(); } if (gram != null) { m_SendEventArgs.SetBuffer(gram.Buffer, 0, gram.Length); Send_Start(); } }
private void OnSend(IAsyncResult asyncResult) { var s = (Socket)asyncResult.AsyncState; try { var bytes = s.EndSend(asyncResult); if (bytes <= 0) { Dispose(false); return; } m_NextCheckActivity = Core.TickCount + 90000; if (m_CoalesceSleep >= 0) { Thread.Sleep(m_CoalesceSleep); } SendQueue.Gram gram; lock (m_SendQueue) { gram = m_SendQueue.Dequeue(); if (gram == null && m_SendQueue.IsFlushReady) { gram = m_SendQueue.CheckFlushReady(); } } if (gram != null) { try { s.BeginSend(gram.Buffer, 0, gram.Length, SocketFlags.None, m_OnSend, s); } catch (Exception ex) { TraceException(ex); Dispose(false); } } else { lock (_SendLock) { _Sending = false; } } } catch (Exception) { Dispose(false); } }
private void OnSend(IAsyncResult asyncResult) { m_Sending = false; if (m_Socket == null) { return; } try { int bytes = m_Socket.EndSend(asyncResult); if (bytes <= 0) { Dispose(false); return; } if (m_Disposing && !m_DisposeFinished) { FinishDispose(); return; } //Console.WriteLine( "OnSend: {0}: Complete send of {1} bytes", this, bytes ); m_NextCheckActivity = DateTime.Now + TimeSpan.FromMinutes(1.2); if (m_CoalesceSleep >= 0) { System.Threading.Thread.Sleep(m_CoalesceSleep); } int length = 0; byte[] queued; lock (m_SendQueue) queued = m_SendQueue.Dequeue(ref length); if (queued != null) { m_Socket.BeginSend(queued, 0, length, SocketFlags.None, m_OnSend, null); m_Sending = true; //Console.WriteLine( "OnSend: {0}: Begin send of {1} bytes", this, length ); } } catch // ( Exception ex ) { //Console.WriteLine(ex); Dispose(false); } }
private void OnSend(IAsyncResult asyncResult) { m_Sending = false; if (m_Socket == null) { return; } try { int bytes = m_Socket.EndSend(asyncResult); if (bytes <= 0) { Dispose(false); return; } m_Outgoing += bytes; m_NetServer.OnSend(this, bytes); if (m_Disposing && !m_DisposeFinished) { FinishDispose(); return; } m_NextCheckActivity = DateTime.Now + TimeSpan.FromMinutes(1.2); if (m_CoalesceSleep >= 0) { Thread.Sleep(m_CoalesceSleep); } int length = 0; byte[] queued; lock (m_SendQueue) queued = m_SendQueue.Dequeue(ref length); if (queued != null) { m_Socket.BeginSend(queued, 0, length, SocketFlags.None, OnSend, null); m_Sending = true; } } catch (Exception ex) { TraceException(ex); Dispose(false); } }
private void OnSend(IAsyncResult asyncResult) { Socket s = (Socket)asyncResult.AsyncState; try { int bytes = s.EndSend(asyncResult); if (bytes <= 0) { Dispose(false); return; } m_NextCheckActivity = DateTime.Now + TimeSpan.FromMinutes(1.2); if (m_CoalesceSleep >= 0) { Thread.Sleep(m_CoalesceSleep); } SendQueue.Gram gram; lock (m_SendQueue) { gram = m_SendQueue.Dequeue(); } if (gram != null) { try { s.BeginSend(gram.Buffer, 0, gram.Length, SocketFlags.None, m_OnSend, s); } catch (Exception ex) { TraceException(ex); Dispose(false); } } } catch (Exception) { Dispose(false); } }