Akka.Interfaced.SlimSocket.Server.TokenChecker.OnConnectionReceive C# (CSharp) Method

OnConnectionReceive() protected method

protected OnConnectionReceive ( TcpConnection connection, object packet ) : void
connection TcpConnection
packet object
return void
        protected void OnConnectionReceive(TcpConnection connection, object packet)
        {
            _connection.Closed -= OnConnectionClose;
            _connection.Received -= OnConnectionReceive;

            try
            {
                // Before token is validated

                var p = packet as Packet;
                if (p == null)
                {
                    _eventStream.Publish(new Warning(
                        _self.Path.ToString(), GetType(),
                        $"Receives null packet from {_connection?.RemoteEndPoint}"));
                    return;
                }

                if (p.Type != PacketType.System || (p.Message is string) == false)
                {
                    _eventStream.Publish(new Warning(
                        _self.Path.ToString(), GetType(),
                        $"Receives a bad packet without a message from {_connection?.RemoteEndPoint}"));
                    return;
                }

                // Try to open

                var token = (string)p.Message;
                var succeeded = _gateway.EstablishChannel(token, _connection);
                if (succeeded)
                {
                    // set null to avoid closing connection in PostStop
                    _connection = null;
                }
                else
                {
                    _eventStream.Publish(new Warning(
                        _self.Path.ToString(), GetType(),
                        $"Receives wrong token({token}) from {_connection?.RemoteEndPoint}"));
                    return;
                }
            }
            finally
            {
                // This actor will be destroyed anyway after this call.
                _self.Tell(PoisonPill.Instance);
            }
        }
    }