public BaseMessageReceiver(
            IServiceProvider serviceProvider,
            IMultipartMessageService multipartMessageService,
            IMessageDispatcher messageDispatcher)
        {
            _serviceProvider         = serviceProvider;
            _multipartMessageService = multipartMessageService;
            _messageDispatcher       = messageDispatcher;
            _logger = Log.ForContext <BaseMessageReceiver <TService> >();

            _messageHandlers = new Dictionary <Type, MessageHandler <TService> >();

            AddMessageHandler <MultipartMessage>(
                async(service, session, message) =>
            {
                var fullMessage = await _multipartMessageService.HandleMultipartMessage(session, message);
                if (fullMessage != null)
                {
                    await OnReceived(session, fullMessage);
                }
            }
                );
            AddMessageHandler <AcknowledgeMessage>(
                (service, session, message) =>
            {
                _messageDispatcher.AcknowledgeMessage(message.ResponseId, message.MessageHandled);
                return(Task.CompletedTask);
            }
                );
        }
Exemplo n.º 2
0
 public UserMessageReceiver(
     IServiceProvider serviceProvider,
     IMultipartMessageService multipartMessageService,
     IMessageDispatcher messageDispatcher)
     : base(serviceProvider, multipartMessageService, messageDispatcher)
 {
     AddMessageHandler <AuthenticateUserRequest, AuthenticateUserResponse>(
         (service, session, message) => service.AuthenticateUser(session, message)
         );
     AddMessageHandler <BroadcastServerStatusRequest, BroadcastServerStatusResponse>(
         (service, session, message) => service.BroadcastServerStatus(session, message)
         );
     AddMessageHandler <BroadcastServerHeartbeatRequest, BroadcastServerHeartbeatResponse>(
         (service, session, message) => service.BroadcastServerHeartbeat(session, message)
         );
     AddMessageHandler <BroadcastServerRemoveRequest>(
         (service, session, message) => service.BroadcastServerRemove(session, message)
         );
     AddMessageHandler <ConnectToMatchmakingRequest, ConnectToServerResponse>(
         (service, session, message) => service.ConnectToMatchmaking(session, message)
         );
     AddMessageHandler <ConnectToServerRequest, ConnectToServerResponse>(
         (service, session, message) => service.ConnectToServer(session, message)
         );
     AddMessageHandler <SessionKeepaliveMessage>(
         (service, session, message) => service.SessionKeepalive(session, message)
         );
 }
 public HandshakeMessageReceiver(
     IServiceProvider serviceProvider,
     IMultipartMessageService multipartMessageService,
     IMessageDispatcher messageDispatcher)
     : base(serviceProvider, multipartMessageService, messageDispatcher)
 {
     AddMessageHandler <ClientHelloRequest, HelloVerifyRequest>(
         (service, session, request) => service.ClientHello(session, request),
         requireAcknowledgement: false
         );
     AddMessageHandler <ClientHelloWithCookieRequest, ServerHelloRequest>(
         (service, session, request) => service.ClientHelloWithCookie(session, request)
         );
     AddMessageHandler <ClientKeyExchangeRequest, ChangeCipherSpecRequest>(
         (service, session, request) => service.ClientKeyExchange(session, request)
         );
 }