示例#1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="message"></param>
 public void Send(AbstractRcpMessage message)
 {
     AddMessage(() =>
     {
         m_rpcConnection.Send(message);
     });
 }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="message"></param>
        private void HandleAccountConnectedLists(AuthRPCServiceClient client, AbstractRcpMessage message)
        {
            if (client.AuthState != AuthStateEnum.SUCCESS)
            {
                return;
            }

            var connectedList = (AccountConnectedList)message;

            Logger.Info(string.Format("AuthServiceRPC [{0}][{1}] GameAccount connected list, playerCount={2}", client.Ip, client.GameId, connectedList.ConnectedAccounts.Count));

            AuthService.Instance.AddMessage(() => client.Players.AddRange(connectedList.ConnectedAccounts));
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="message"></param>
        private void HandleGameAccountDisconnected(AuthRPCServiceClient client, AbstractRcpMessage message)
        {
            if (client.AuthState != AuthStateEnum.SUCCESS)
            {
                return;
            }

            var accountId = ((AccountDisconnected)message).AccountId;

            Logger.Info(string.Format("AuthServiceRPC [{0}][{1}] GameAccount disconnected accountId={2}", client.Ip, client.GameId, accountId));

            AuthService.Instance.AddMessage(() => client.Players.Remove(accountId));
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="message"></param>
        private void HandleGameStateUpdate(AuthRPCServiceClient client, AbstractRcpMessage message)
        {
            if (client.AuthState != AuthStateEnum.SUCCESS)
            {
                return;
            }

            var state = ((StateUpdateMessage)message).State;

            Logger.Info(string.Format("AuthServiceRPC [{0}][{1}] GameState updated to {2}", client.Ip, client.GameId, state));

            client.GameState = state;

            AuthService.Instance.RefreshWorldList();
        }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="message"></param>
        private void HandleGameIdUpdate(AuthRPCServiceClient client, AbstractRcpMessage message)
        {
            if (client.AuthState != AuthStateEnum.SUCCESS)
            {
                return;
            }

            var gameIdUpdateMessage = (IdUpdateMessage)message;

            AuthService.Instance.RegisterWorld(gameIdUpdateMessage.GameId, client);

            Logger.Info(string.Format("AuthServiceRPC [{0}] GameId updated to [{1}]", client.Ip, gameIdUpdateMessage.GameId));

            client.GameId = gameIdUpdateMessage.GameId;
        }
示例#6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="message"></param>
        private void HandleAuthentification(AuthRPCServiceClient client, AbstractRcpMessage message)
        {
            if (client.AuthState != AuthStateEnum.NEGOTIATING)
            {
                return;
            }

            var result      = AuthResultEnum.FAILED;
            var authMessage = (AuthentificationMessage)message;

            if (authMessage.Password == "smarken")
            {
                client.AuthState = AuthStateEnum.SUCCESS;
                result           = AuthResultEnum.SUCCESS;

                client.RemoteIp = authMessage.RemoteIp;
                Logger.Info(string.Format("AuthServiceRPC [{0}] Authed sucessfully", client.Ip));
            }

            client.Send(new AuthentificationResult(result));
        }
示例#7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="message"></param>
        private void OnMessage(AbstractRcpMessage message)
        {
            switch (message.Id)
            {
            case (int)MessageIdEnum.AUTH_TO_WORLD_CREDENTIAL_RESULT:
                if (((AuthentificationResult)message).Result == AuthResultEnum.SUCCESS)
                {
                    AuthState = AuthStateEnum.SUCCESS;
                    Logger.Info("RPCManager authentification success.");
                    Send(new IdUpdateMessage(WorldConfig.GAME_ID));
                    Send(new StateUpdateMessage(GameStateEnum.ONLINE));
                    WorldService.Instance.AddMessage(() =>
                    {
                        Send(new AccountConnectedList(ClientManager.Instance.ConnectedAccounts));
                    });
                }
                else
                {
                    AuthState = AuthStateEnum.FAILED;
                    Logger.Error("RPCManager authentification failed : wrong credentials.");
                }
                break;

            case (int)MessageIdEnum.AUTH_TO_WORLD_GAME_TICKET:
                var ticketMessage = (GameTicketMessage)message;
                ClientManager.Instance.AddTicket
                (
                    ticketMessage.AccountId,
                    ticketMessage.Name,
                    ticketMessage.Pseudo,
                    ticketMessage.Power,
                    ticketMessage.RemainingSubscription,
                    ticketMessage.LastConnectionDate,
                    ticketMessage.LastConnectionIP,
                    ticketMessage.Ticket
                );
                break;
            }
        }
示例#8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="client"></param>
 /// <param name="message"></param>
 protected override void OnMessageReceived(AuthRPCServiceClient client, AbstractRcpMessage message)
 {
     Logger.Debug("AuthServiceRPC " + (MessageIdEnum)message.Id);
 }
 protected override void OnMessage(AbstractRcpMessage message)
 {
 }