Esempio n. 1
0
        public Session(Socket socket) : base(socket)
        {
            _accountInfo = new AccountInfo();

            ClientRequestHandlers.Add("Command_RealmListTicketRequest_v1_b9", GetRealmListTicket);
            ClientRequestHandlers.Add("Command_LastCharPlayedRequest_v1_b9", GetLastCharPlayed);
            ClientRequestHandlers.Add("Command_RealmListRequest_v1_b9", GetRealmList);
            ClientRequestHandlers.Add("Command_RealmJoinRequest_v1_b9", JoinRealm);
        }
Esempio n. 2
0
        public BattlenetRpcErrorCode HandleProcessClientRequest(Bgs.Protocol.GameUtilities.V1.ClientRequest request, Bgs.Protocol.GameUtilities.V1.ClientResponse response)
        {
            if (!_authed)
            {
                return(BattlenetRpcErrorCode.Denied);
            }

            Bgs.Protocol.Attribute       command = null;
            Dictionary <string, Variant> Params  = new Dictionary <string, Variant>();

            for (int i = 0; i < request.Attribute.Count; ++i)
            {
                Bgs.Protocol.Attribute attr = request.Attribute[i];
                Params[attr.Name] = attr.Value;
                if (attr.Name.Contains("Command_"))
                {
                    command = attr;
                }
            }

            if (command == null)
            {
                Log.outError(LogFilter.SessionRpc, "{0} sent ClientRequest with no command.", GetClientInfo());
                return(BattlenetRpcErrorCode.RpcMalformedRequest);
            }

            var handler = ClientRequestHandlers.LookupByKey(command.Name);

            if (handler == null)
            {
                Log.outError(LogFilter.SessionRpc, "{0} sent ClientRequest with unknown command {1}.", GetClientInfo(), command.Name);
                return(BattlenetRpcErrorCode.RpcNotImplemented);
            }

            return(handler(Params, response));
        }