Akka.Streams.Tests.IO.TcpHelper.TestClient.OnReceive C# (CSharp) Метод

OnReceive() защищенный Метод

protected OnReceive ( object message ) : void
message object
Результат void
            protected override void OnReceive(object message)
            {
                message.Match().With<ClientWrite>(w =>
                {
                    if (!_writePending)
                    {
                        _writePending = true;
                        _connection.Tell(Tcp.Write.Create(w.Bytes, WriteAck.Instance));
                    }
                    else
                        _queuedWrites.Enqueue(w.Bytes);
                }).With<WriteAck>(() =>
                {
                    if (_queuedWrites.Count != 0)
                    {
                        var next = _queuedWrites.Dequeue();
                        _connection.Tell(Tcp.Write.Create(next, WriteAck.Instance));
                    }
                    else
                    {
                        _writePending = false;
                        if(_closeAfterWrite != null)
                            _connection.Tell(_closeAfterWrite);
                    }
                }).With<ClientRead>(r =>
                {
                    _readTo = r.ReadTo;
                    _toRead = r.Count;
                    _connection.Tell(Tcp.ResumeReading.Instance);
                }).With<Tcp.Received>(r =>
                {
                    _readBuffer += r.Data;
                    if (_readBuffer.Count >= _toRead)
                    {
                        _readTo.Tell(new ReadResult(_readBuffer));
                        _readBuffer = ByteString.Empty;
                        _toRead = 0;
                        _readTo = Context.System.DeadLetters;
                    }
                    else
                        _connection.Tell(Tcp.ResumeReading.Instance);
                }).With<PingClose>(p =>
                {
                    _readTo = p.Requester;
                    _connection.Tell(Tcp.ResumeReading.Instance);
                }).With<Tcp.ConnectionClosed>(c =>
                {
                    _readTo.Tell(c);
                    if(!c.IsPeerClosed)
                        Context.Stop(Self);
                }).With<ClientClose>(c =>
                {
                    if (!_writePending)
                        _connection.Tell(c.Cmd);
                    else
                        _closeAfterWrite = c.Cmd;
                });
            }
        }
TcpHelper.TestClient