Akka.Interfaced.SlimSocket.Client.TcpConnection.ProcessSend C# (CSharp) Метод

ProcessSend() приватный Метод

private ProcessSend ( ) : void
Результат void
        private void ProcessSend()
        {
            lock (_sendPacketQueue)
            {
                while (_sendPacketQueue.Count > 0)
                {
                    // 큐에서 보낼 패킷을 얻어 바이트 스트림 구성

                    object packet;
                    {
                        packet = _sendPacketQueue[0];
                        _sendPacketQueue.RemoveAt(0);
                    }

                    if (packet == null)
                    {
                        _client.Client.Shutdown(SocketShutdown.Send);
                        break;
                    }

                    int length;
                    using (var ms = new MemoryStream())
                    {
                        _packetSerializer.Serialize(ms, packet);
                        length = (int)ms.Length;
                        if (length > _sendBuf.Length)
                        {
                            _logger?.ErrorFormat("ProcessSend got too large packet. Length={0}", length);
                            Close();
                            return;
                        }
                        Array.Copy(ms.GetBuffer(), _sendBuf, length);
                    }

                    // 전송

                    try
                    {
                        _sendProcessing = true;
                        _client.GetStream().BeginWrite(_sendBuf, 0, length, ProcessSendCallback, null);
                        break;
                    }
                    catch (Exception e)
                    {
                        _logger?.Trace("ProcessSend Exception", e);
                        break;
                    }
                }
            }
        }