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); }
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)); }