Exemple #1
0
        /// <summary>
        /// Reads first Hello message from client
        /// </summary>
        private async Task <bool> ProcessFirstMessage(TmqMessage message, IConnectionInfo info, ProtocolHandshakeResult handshakeResult)
        {
            if (message.Type != MessageType.Server || message.ContentType != KnownContentTypes.Hello)
            {
                return(false);
            }

            ConnectionData connectionData = new ConnectionData();

            message.Content.Position = 0;
            await connectionData.ReadFromStream(message.Content);

            TmqServerSocket socket = await _handler.Connected(_server, info, connectionData);

            if (socket == null)
            {
                info.Close();
                return(false);
            }

            info.State             = ConnectionStates.Pipe;
            handshakeResult.Socket = socket;
            _server.Pinger.Add(socket);

            socket.SetCleanupAction(s =>
            {
                _server.Pinger.Remove(socket);
                _handler.Disconnected(_server, s);
            });

            return(true);
        }
Exemple #2
0
 private async Task ProcessMessage(IConnectionInfo info, TmqMessage message, TmqServerSocket socket)
 {
     //if user makes a mistake in received method, we should not interrupt connection handling
     try
     {
         socket.KeepAlive();
         await _handler.Received(_server, info, socket, message);
     }
     catch (Exception e)
     {
         if (_server.Logger != null)
         {
             _server.Logger.LogException("Unhandled Exception", e);
         }
     }
 }