Example #1
0
        public void AddEntriesFrom_Message()
        {
            var message1 = new ForeignMessage { C = 2000 };
            var message2 = new ForeignMessage { C = -250 };

            uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited);
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            output.WriteTag(tag);
            output.WriteMessage(message1);
            output.WriteTag(tag);
            output.WriteMessage(message2);
            output.Flush();
            stream.Position = 0;

            var field = new RepeatedField<ForeignMessage>();
            var input = new CodedInputStream(stream);
            input.AssertNextTag(tag);
            field.AddEntriesFrom(input, FieldCodec.ForMessage(tag, ForeignMessage.Parser));
            CollectionAssert.AreEqual(new[] { message1, message2}, field);
            Assert.IsTrue(input.IsAtEnd);
        }
Example #2
0
 /// <summary>
 ///     Creates a new instance of the <see cref="MultiHash" /> class from the
 ///     specified <see cref="Google.Protobuf.CodedInputStream" />.
 /// </summary>
 /// <param name="stream">
 ///     A <see cref="Google.Protobuf.CodedInputStream" /> containing the binary representation of the
 ///     <b>MultiHash</b>.
 /// </param>
 /// <remarks>
 ///     Reads the binary representation of <see cref="MultiHash" /> from the <paramref name="stream" />.
 ///     <para>
 ///         The binary representation is a <see cref="Varint" /> of the <see cref="HashingAlgorithm.Code" />,
 ///         <see cref="Varint" /> of the <see cref="HashingAlgorithm.DigestSize" /> followed by the <see cref="Digest" />.
 ///     </para>
 ///     <para>
 ///         When an unknown <see cref="HashingAlgorithm.Code">hashing algorithm number</see> is encountered
 ///         a new hashing algorithm is <see cref="HashingAlgorithm.Register">registered</see>.  This new algorithm does not
 ///         support
 ///         matching nor computing a hash.
 ///         This behaviour allows parsing of any well formed <see cref="MultiHash" /> even when
 ///         the hashing algorithm is unknown.
 ///     </para>
 /// </remarks>
 public MultiHash(CodedInputStream stream)
 {
     Read(stream);
 }
Example #3
0
        public override void CallServerMethod(uint token, uint methodId, CodedInputStream stream)
        {
            switch (methodId)
            {
            case 1:
            {
                SubscribeRequest request = new SubscribeRequest();
                request.MergeFrom(stream);


                SubscribeResponse     response = new SubscribeResponse();
                BattlenetRpcErrorCode status   = HandleSubscribe(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.Subscribe(bgs.protocol.friends.v1.SubscribeRequest: {1}) returned bgs.protocol.friends.v1.SubscribeResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 2:
            {
                SendInvitationRequest request = new SendInvitationRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleSendInvitation(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.SendInvitation(bgs.protocol.SendInvitationRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 3:
            {
                GenericInvitationRequest request = new GenericInvitationRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleAcceptInvitation(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.AcceptInvitation(bgs.protocol.GenericInvitationRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 4:
            {
                GenericInvitationRequest request = new GenericInvitationRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleRevokeInvitation(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.RevokeInvitation(bgs.protocol.GenericInvitationRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 5:
            {
                GenericInvitationRequest request = new GenericInvitationRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleDeclineInvitation(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.DeclineInvitation(bgs.protocol.GenericInvitationRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 6:
            {
                GenericInvitationRequest request = new GenericInvitationRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleIgnoreInvitation(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.IgnoreInvitation(bgs.protocol.GenericInvitationRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 7:
            {
                AssignRoleRequest request = new AssignRoleRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleAssignRole(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.AssignRole(bgs.protocol.friends.v1.AssignRoleRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 8:
            {
                GenericFriendRequest request = new GenericFriendRequest();
                request.MergeFrom(stream);


                GenericFriendResponse response = new GenericFriendResponse();
                BattlenetRpcErrorCode status   = HandleRemoveFriend(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.RemoveFriend(bgs.protocol.friends.v1.GenericFriendRequest: {1}) returned bgs.protocol.friends.v1.GenericFriendResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 9:
            {
                ViewFriendsRequest request = new ViewFriendsRequest();
                request.MergeFrom(stream);


                ViewFriendsResponse   response = new ViewFriendsResponse();
                BattlenetRpcErrorCode status   = HandleViewFriends(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.ViewFriends(bgs.protocol.friends.v1.ViewFriendsRequest: {1}) returned bgs.protocol.friends.v1.ViewFriendsResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 10:
            {
                UpdateFriendStateRequest request = new UpdateFriendStateRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleUpdateFriendState(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.UpdateFriendState(bgs.protocol.friends.v1.UpdateFriendStateRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 11:
            {
                UnsubscribeRequest request = new UnsubscribeRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleUnsubscribe(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.Unsubscribe(bgs.protocol.friends.v1.UnsubscribeRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 12:
            {
                GenericFriendRequest request = new GenericFriendRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleRevokeAllInvitations(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.RevokeAllInvitations(bgs.protocol.friends.v1.GenericFriendRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            /*case 13:
             *  {
             *      GetFriendListRequest request = new GetFriendListRequest();
             *      request.MergeFrom(stream);
             *
             *
             *      GetFriendListResponse response = new GetFriendListResponse();
             *      BattlenetRpcErrorCode status = HandleGetFriendList(request, response);
             *      Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.GetFriendList(bgs.protocol.friends.v1.GetFriendListRequest: {1}) returned bgs.protocol.friends.v1.GetFriendListResponse: {2} status: {3}.",
             *        GetCallerInfo(), request.ToString(), response.ToString(), status);
             *      if (status == 0)
             *          SendResponse(token, response);
             *      else
             *          SendResponse(token, status);
             *      break;
             *  }
             * case 14:
             *  {
             *      CreateFriendshipRequest request = new CreateFriendshipRequest();
             *      request.MergeFrom(stream);
             *
             *
             *      NoData response = new NoData();
             *      BattlenetRpcErrorCode status = HandleCreateFriendship(request, response);
             *      Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsService.CreateFriendship(bgs.protocol.friends.v1.CreateFriendshipRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
             *        GetCallerInfo(), request.ToString(), response.ToString(), status);
             *      if (status == 0)
             *          SendResponse(token, response);
             *      else
             *          SendResponse(token, status);
             *      break;
             *  }*/
            default:
                Log.outError(LogFilter.ServiceProtobuf, "Bad method id {0}.", methodId);
                SendResponse(token, BattlenetRpcErrorCode.RpcInvalidMethod);
                break;
            }
        }
Example #4
0
        private static PeerId ReadPeerId(CodedInputStream input)
        {
            var value = ReadSingleField(input, x => x.ReadString());

            return(new PeerId(value));
        }
Example #5
0
        private static MessageTypeId ReadMessageTypeId(CodedInputStream input)
        {
            var fullName = ReadSingleField(input, x => x.ReadString());

            return(new MessageTypeId(fullName));
        }
Example #6
0
 public abstract PacketDistributed MergeFrom(CodedInputStream input, PacketDistributed _Inst);
Example #7
0
 public virtual IMessageLite CallMethod(RpcRequestHeader requestHeader, CodedInputStream input)
 {
     if (requestHeader.MethodName == ".close")
     {
         Close();
         return RpcVoid.DefaultInstance;
     }
     else if (requestHeader.MethodName == ".ping")
     {
         return OnPing(RpcPingRequest.ParseFrom(input, ExtensionRegistry));
     }
     else
     {
         return _implementation.CallMethod(requestHeader.MethodName, input, ExtensionRegistry);
     }
 }
Example #8
0
        public void WriteTo_String()
        {
            uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited);
            var field = new RepeatedField<string> { "Foo", "", "Bar" };
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            field.WriteTo(output, FieldCodec.ForString(tag));
            output.Flush();
            stream.Position = 0;

            var input = new CodedInputStream(stream);
            input.AssertNextTag(tag);
            Assert.AreEqual("Foo", input.ReadString());
            input.AssertNextTag(tag);
            Assert.AreEqual("", input.ReadString());
            input.AssertNextTag(tag);
            Assert.AreEqual("Bar", input.ReadString());
            Assert.IsTrue(input.IsAtEnd);
        }
        void Dispatch <Service>(Session session, uint serviceHash, uint token, uint methodId, CodedInputStream stream) where Service : ServiceBase
        {
            var obj = (Service)Activator.CreateInstance(typeof(Service), session, serviceHash);

            obj.CallServerMethod(token, methodId, stream);
        }
        public void Dispatch(Session session, uint serviceHash, uint token, uint methodId, CodedInputStream stream)
        {
            var action = _dispatchers.LookupByKey(serviceHash);

            if (action != null)
            {
                action(session, serviceHash, token, methodId, stream);
            }
            else
            {
                Log.outDebug(LogFilter.SessionRpc, "{0} tried to call invalid service {1}", session.GetClientInfo(), serviceHash);
            }
        }
Example #11
0
 public override void ReadValue(CodedInputStream stream)
 {
     Value      = stream.ReadString();
     DomainName = Value;
 }
Example #12
0
 public override void ReadValue(CodedInputStream stream)
 {
     stream.ReadLength();
     MultiHash = new MultiHash(stream);
     Value     = MultiHash.ToBase58();
 }
Example #13
0
 /// <summary>
 ///   Reads the binary representation from the specified <see cref="CodedInputStream"/>.
 /// </summary>
 /// <param name="stream">
 ///   The <see cref="CodedOutputStream"/> to read from.
 /// </param>
 /// <remarks>
 ///   The binary representation is an option <see cref="Value"/>.
 /// </remarks>
 public abstract void ReadValue(CodedInputStream stream);
Example #14
0
        public override void CallServerMethod(uint token, uint methodId, CodedInputStream stream)
        {
            switch (methodId)
            {
            case 1:
            {
                LogonRequest request = new LogonRequest();
                request.MergeFrom(stream);

                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleLogon(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationService.Logon(bgs.protocol.authentication.v1.LogonRequest: {1}) returned bgs.protocol.NoData: {2} status {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 2:
            {
                ModuleNotification request = new ModuleNotification();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleModuleNotify(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationService.ModuleNotify(bgs.protocol.authentication.v1.ModuleNotification: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 3:
            {
                ModuleMessageRequest request = new ModuleMessageRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleModuleMessage(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationService.ModuleMessage(bgs.protocol.authentication.v1.ModuleMessageRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 4:
            {
                EntityId request = new EntityId();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleSelectGameAccount_DEPRECATED(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationService.SelectGameAccount_DEPRECATED(bgs.protocol.EntityId: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 5:
            {
                GenerateSSOTokenRequest request = new GenerateSSOTokenRequest();
                request.MergeFrom(stream);


                GenerateSSOTokenResponse response = new GenerateSSOTokenResponse();
                BattlenetRpcErrorCode    status   = HandleGenerateSSOToken(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationService.GenerateSSOToken(bgs.protocol.authentication.v1.GenerateSSOTokenRequest: {1}) returned bgs.protocol.authentication.v1.GenerateSSOTokenResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 6:
            {
                SelectGameAccountRequest request = new SelectGameAccountRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleSelectGameAccount(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationService.SelectGameAccount(bgs.protocol.authentication.v1.SelectGameAccountRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 7:
            {
                VerifyWebCredentialsRequest request = new VerifyWebCredentialsRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleVerifyWebCredentials(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationService.VerifyWebCredentials(bgs.protocol.authentication.v1.VerifyWebCredentialsRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 8:
            {
                GenerateWebCredentialsRequest request = new GenerateWebCredentialsRequest();
                request.MergeFrom(stream);


                GenerateWebCredentialsResponse response = new GenerateWebCredentialsResponse();
                BattlenetRpcErrorCode          status   = HandleGenerateWebCredentials(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationService.GenerateWebCredentials(bgs.protocol.authentication.v1.GenerateWebCredentialsRequest: {1}) returned bgs.protocol.authentication.v1.GenerateWebCredentialsResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            default:
                Log.outError(LogFilter.ServiceProtobuf, "Bad method id {0}.", methodId);
                SendResponse(token, BattlenetRpcErrorCode.RpcInvalidMethod);
                break;
            }
        }
Example #15
0
        public override void CallServerMethod(uint token, uint methodId, CodedInputStream stream)
        {
            switch (methodId)
            {
            case 1:
            {
                ModuleLoadRequest request = new ModuleLoadRequest();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnModuleLoad(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnModuleLoad(bgs.protocol.authentication.v1.ModuleLoadRequest: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 2:
            {
                ModuleMessageRequest request = new ModuleMessageRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleOnModuleMessage(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnModuleMessage(bgs.protocol.authentication.v1.ModuleMessageRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 4:
            {
                ServerStateChangeRequest request = new ServerStateChangeRequest();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnServerStateChange(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnServerStateChange(bgs.protocol.authentication.v1.ServerStateChangeRequest: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 5:
            {
                LogonResult request = new LogonResult();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnLogonComplete(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnLogonComplete(bgs.protocol.authentication.v1.LogonResult: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 6:
            {
                MemModuleLoadRequest request = new MemModuleLoadRequest();
                request.MergeFrom(stream);


                MemModuleLoadResponse response = new MemModuleLoadResponse();
                BattlenetRpcErrorCode status   = HandleOnMemModuleLoad(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnMemModuleLoad(bgs.protocol.authentication.v1.MemModuleLoadRequest: {1}) returned bgs.protocol.authentication.v1.MemModuleLoadResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 10:
            {
                LogonUpdateRequest request = new LogonUpdateRequest();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnLogonUpdate(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnLogonUpdate(bgs.protocol.authentication.v1.LogonUpdateRequest: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 11:
            {
                VersionInfoNotification request = new VersionInfoNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnVersionInfoUpdated(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnVersionInfoUpdated(bgs.protocol.authentication.v1.VersionInfoNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 12:
            {
                LogonQueueUpdateRequest request = new LogonQueueUpdateRequest();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnLogonQueueUpdate(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnLogonQueueUpdate(bgs.protocol.authentication.v1.LogonQueueUpdateRequest: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 13:
            {
                NoData request = new NoData();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnLogonQueueEnd(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnLogonQueueEnd(bgs.protocol.NoData: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 14:
            {
                GameAccountSelectedRequest request = new GameAccountSelectedRequest();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnGameAccountSelected(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AuthenticationListener.OnGameAccountSelected(bgs.protocol.authentication.v1.GameAccountSelectedRequest: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            default:
                Log.outError(LogFilter.ServiceProtobuf, "Bad method id {0}.", methodId);
                SendResponse(token, BattlenetRpcErrorCode.RpcInvalidMethod);
                break;
            }
        }
 public abstract void CallServerMethod(uint token, uint methodId, CodedInputStream stream);
Example #17
0
        public void AddEntriesFrom_String()
        {
            uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited);
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            output.WriteTag(tag);
            output.WriteString("Foo");
            output.WriteTag(tag);
            output.WriteString("");
            output.WriteTag(tag);
            output.WriteString("Bar");
            output.Flush();
            stream.Position = 0;

            var field = new RepeatedField<string>();
            var input = new CodedInputStream(stream);
            input.AssertNextTag(tag);
            field.AddEntriesFrom(input, FieldCodec.ForString(tag));
            CollectionAssert.AreEqual(new[] { "Foo", "", "Bar" }, field);
            Assert.IsTrue(input.IsAtEnd);
        }
Example #18
0
 protected static bool OnPingRequest(UserSocket client, CodedInputStream stream)
 {
     return(true);
 }
Example #19
0
        public void TestNegativeEnumArray()
        {
            int arraySize = 1 + 1 + (11 * 5);
            int msgSize = arraySize;
            byte[] bytes = new byte[msgSize];
            CodedOutputStream output = new CodedOutputStream(bytes);
            uint tag = WireFormat.MakeTag(8, WireFormat.WireType.Varint);
            for (int i = 0; i >= -5; i--)
            {
                output.WriteTag(tag);
                output.WriteEnum(i);
            }

            Assert.AreEqual(0, output.SpaceLeft);

            CodedInputStream input = new CodedInputStream(bytes);
            tag = input.ReadTag();

            RepeatedField<SampleEnum> values = new RepeatedField<SampleEnum>();
            values.AddEntriesFrom(input, FieldCodec.ForEnum(tag, x => (int)x, x => (SampleEnum)x));

            Assert.AreEqual(6, values.Count);
            Assert.AreEqual(SampleEnum.None, values[0]);
            Assert.AreEqual(((SampleEnum)(-1)), values[1]);
            Assert.AreEqual(SampleEnum.NegativeValue, values[2]);
            Assert.AreEqual(((SampleEnum)(-3)), values[3]);
            Assert.AreEqual(((SampleEnum)(-4)), values[4]);
            Assert.AreEqual(((SampleEnum)(-5)), values[5]);
        }
Example #20
0
        public void MergeFrom(CodedInputStream input)
        {
            uint num;

            while ((num = input.ReadTag()) != 0)
            {
                switch (num)
                {
                default:
                    _unknownFields = UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                    break;

                case 8u:
                    eventType_ = (Types.EventType)input.ReadEnum();
                    break;

                case 16u:
                    EventId = input.ReadSInt32();
                    break;

                case 26u:
                {
                    int?num6 = _single_parentEventId_codec.Read(input);
                    if (!parentEventId_.HasValue || num6 != 0)
                    {
                        ParentEventId = num6;
                    }
                    break;
                }

                case 32u:
                    Int1 = input.ReadInt32();
                    break;

                case 40u:
                    Int2 = input.ReadInt32();
                    break;

                case 48u:
                    Int3 = input.ReadInt32();
                    break;

                case 56u:
                    Int4 = input.ReadInt32();
                    break;

                case 64u:
                    Int5 = input.ReadInt32();
                    break;

                case 72u:
                    Int6 = input.ReadInt32();
                    break;

                case 80u:
                    Int7 = input.ReadInt32();
                    break;

                case 90u:
                    String1 = input.ReadString();
                    break;

                case 96u:
                    Bool1 = input.ReadBool();
                    break;

                case 106u:
                    if (cellCoord1_ == null)
                    {
                        cellCoord1_ = new CellCoord();
                    }
                    input.ReadMessage(cellCoord1_);
                    break;

                case 114u:
                    if (cellCoord2_ == null)
                    {
                        cellCoord2_ = new CellCoord();
                    }
                    input.ReadMessage(cellCoord2_);
                    break;

                case 120u:
                    companionReserveState1_ = (CompanionReserveState)input.ReadEnum();
                    break;

                case 128u:
                    companionReserveState2_ = (CompanionReserveState)input.ReadEnum();
                    break;

                case 136u:
                    damageReductionType1_ = (DamageReductionType)input.ReadEnum();
                    break;

                case 144u:
                    fightResult1_ = (FightResult)input.ReadEnum();
                    break;

                case 154u:
                    if (gameStatistics1_ == null)
                    {
                        gameStatistics1_ = new GameStatistics();
                    }
                    input.ReadMessage(gameStatistics1_);
                    break;

                case 160u:
                    teamsScoreModificationReason1_ = (TeamsScoreModificationReason)input.ReadEnum();
                    break;

                case 170u:
                {
                    int?num5 = _single_optInt1_codec.Read(input);
                    if (!optInt1_.HasValue || num5 != 0)
                    {
                        OptInt1 = num5;
                    }
                    break;
                }

                case 178u:
                {
                    int?num4 = _single_optInt2_codec.Read(input);
                    if (!optInt2_.HasValue || num4 != 0)
                    {
                        OptInt2 = num4;
                    }
                    break;
                }

                case 186u:
                {
                    int?num3 = _single_optInt3_codec.Read(input);
                    if (!optInt3_.HasValue || num3 != 0)
                    {
                        OptInt3 = num3;
                    }
                    break;
                }

                case 194u:
                {
                    int?num2 = _single_optInt4_codec.Read(input);
                    if (!optInt4_.HasValue || num2 != 0)
                    {
                        OptInt4 = num2;
                    }
                    break;
                }

                case 202u:
                    cellCoordList1_.AddEntriesFrom(input, _repeated_cellCoordList1_codec);
                    break;

                case 210u:
                    spellMovementList1_.AddEntriesFrom(input, _repeated_spellMovementList1_codec);
                    break;

                case 218u:
                    castTargetList1_.AddEntriesFrom(input, _repeated_castTargetList1_codec);
                    break;

                case 224u:
                case 226u:
                    intList1_.AddEntriesFrom(input, _repeated_intList1_codec);
                    break;

                case 232u:
                case 234u:
                    intList2_.AddEntriesFrom(input, _repeated_intList2_codec);
                    break;
                }
            }
        }
Example #21
0
        public override void CallServerMethod(uint token, uint methodId, CodedInputStream stream)
        {
            switch (methodId)
            {
            case 1:
            {
                ClientRequest request = new ClientRequest();
                request.MergeFrom(stream);


                ClientResponse        response = new ClientResponse();
                BattlenetRpcErrorCode status   = HandleProcessClientRequest(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method GameUtilitiesService.ProcessClientRequest(bgs.protocol.game_utilities.v1.ClientRequest: {1}) returned bgs.protocol.game_utilities.v1.ClientResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 2:
            {
                PresenceChannelCreatedRequest request = new PresenceChannelCreatedRequest();
                request.MergeFrom(stream);


                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandlePresenceChannelCreated(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method GameUtilitiesService.PresenceChannelCreated(bgs.protocol.game_utilities.v1.PresenceChannelCreatedRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 3:
            {
                GetPlayerVariablesRequest request = new GetPlayerVariablesRequest();
                request.MergeFrom(stream);


                GetPlayerVariablesResponse response = new GetPlayerVariablesResponse();
                BattlenetRpcErrorCode      status   = HandleGetPlayerVariables(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method GameUtilitiesService.GetPlayerVariables(bgs.protocol.game_utilities.v1.GetPlayerVariablesRequest: {1}) returned bgs.protocol.game_utilities.v1.GetPlayerVariablesResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 6:
            {
                ServerRequest request = new ServerRequest();
                request.MergeFrom(stream);


                ServerResponse        response = new ServerResponse();
                BattlenetRpcErrorCode status   = HandleProcessServerRequest(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method GameUtilitiesService.ProcessServerRequest(bgs.protocol.game_utilities.v1.ServerRequest: {1}) returned bgs.protocol.game_utilities.v1.ServerResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 7:
            {
                GameAccountOnlineNotification request = new GameAccountOnlineNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnGameAccountOnline(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method GameUtilitiesService.OnGameAccountOnline(bgs.protocol.game_utilities.v1.GameAccountOnlineNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 8:
            {
                GameAccountOfflineNotification request = new GameAccountOfflineNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnGameAccountOffline(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method GameUtilitiesService.OnGameAccountOffline(bgs.protocol.game_utilities.v1.GameAccountOfflineNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 9:
            {
                GetAchievementsFileRequest request = new GetAchievementsFileRequest();
                request.MergeFrom(stream);


                GetAchievementsFileResponse response = new GetAchievementsFileResponse();
                BattlenetRpcErrorCode       status   = HandleGetAchievementsFile(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method GameUtilitiesService.GetAchievementsFile(bgs.protocol.game_utilities.v1.GetAchievementsFileRequest: {1}) returned bgs.protocol.game_utilities.v1.GetAchievementsFileResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 10:
            {
                GetAllValuesForAttributeRequest request = new GetAllValuesForAttributeRequest();
                request.MergeFrom(stream);


                GetAllValuesForAttributeResponse response = new GetAllValuesForAttributeResponse();
                BattlenetRpcErrorCode            status   = HandleGetAllValuesForAttribute(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method GameUtilitiesService.GetAllValuesForAttribute(bgs.protocol.game_utilities.v1.GetAllValuesForAttributeRequest: {1}) returned bgs.protocol.game_utilities.v1.GetAllValuesForAttributeResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            default:
                Log.outError(LogFilter.ServiceProtobuf, "Bad method id {0}.", methodId);
                SendResponse(token, BattlenetRpcErrorCode.RpcInvalidMethod);
                break;
            }
        }
Example #22
0
        private static Mapping HandleMapping(CodedInputStream cis)
        {
            var mapping = new Mapping();

            long pos = cis.ReadLength();

            pos += cis.Position;
            while (pos - cis.Position > 0)
            {
                var tag = cis.ReadTag();
                if (tag > 0)
                {
                    var fieldNumber = WireFormat.GetTagFieldNumber(tag);

                    switch (fieldNumber)
                    {
                    case 1:
                        mapping.Id = cis.ReadUInt64();
                        break;

                    case 2:
                        mapping.MemoryStart = cis.ReadUInt64();
                        break;

                    case 3:
                        mapping.MemoryLimit = cis.ReadUInt64();
                        break;

                    case 4:
                        mapping.FileOffset = cis.ReadUInt64();
                        break;

                    case 5:
                        mapping.FileNameIndex = cis.ReadInt64();
                        break;

                    case 6:
                        mapping.BuildIdIndex = cis.ReadInt64();
                        break;

                    case 7:
                        mapping.HasFunctions = cis.ReadInt32() != 0;
                        break;

                    case 8:
                        mapping.HasFilenames = cis.ReadInt32() != 0;
                        break;

                    case 9:
                        mapping.HasLineNumbers = cis.ReadInt32() != 0;
                        break;

                    case 10:
                        mapping.HasInlineFrames = cis.ReadInt32() != 0;
                        break;

                    default:
                        cis.SkipLastField();
                        break;
                    }
                }
                else
                {
                    break;
                }
            }

            return(mapping);
        }
        public void HandlerContent(CodedInputStream stream)
        {
            RawContent content = RawContent.Parser.ParseFrom(stream);

            sn.SendMsg((Int32)Command.ReqRawContent, content);
        }
Example #24
0
        private static Sample HandleSample(CodedInputStream cis)
        {
            var sample = new Sample();
            var lables = new List <Label>();

            sample.Labels = lables;

            var locationIds = new List <ulong>();

            sample.LocationIds = locationIds;

            var values = new List <long>();

            sample.Values = values;

            long pos = cis.ReadLength();

            pos += cis.Position;
            while (pos - cis.Position > 0)
            {
                var tag = cis.ReadTag();
                if (tag > 0)
                {
                    var fieldNumber = WireFormat.GetTagFieldNumber(tag);

                    switch (fieldNumber)
                    {
                    case 1:
                    {
                        long posLocations = cis.ReadLength();
                        posLocations += cis.Position;
                        while (posLocations - cis.Position > 0)
                        {
                            locationIds.Add(cis.ReadUInt64());
                        }

                        break;
                    }

                    case 2:
                    {
                        long posValues = cis.ReadLength();
                        posValues += cis.Position;
                        while (posValues - cis.Position > 0)
                        {
                            values.Add(cis.ReadInt64());
                        }

                        break;
                    }

                    case 3:
                        lables.Add(HandleLabel(cis));
                        break;

                    default:
                        cis.SkipLastField();
                        break;
                    }
                }
                else
                {
                    break;
                }
            }

            return(sample);
        }
Example #25
0
        private static Stream ReadStream(CodedInputStream input)
        {
            var length = input.ReadLength();

            return(new MemoryStream(input.ReadRawBytes(length)));
        }
Example #26
0
        public static void Main(string[] args)
        {
            var profile = new Profile();

            RomanNumeral  y = new RomanNumeral();
            BinaryNumeral x = y;

            using (var fs = new FileStream(@"C:\users\muks\desktop\perf.pb", FileMode.Open, FileAccess.Read))
            {
                using (var cis = new CodedInputStream(fs))
                {
                    var valueTypeList = new List <ValueType>();
                    var samplesList   = new List <Sample>();
                    var mappingList   = new List <Mapping>();
                    var locationList  = new List <Location>();
                    var stringTable   = new List <string>();

                    profile.SampleTypes = valueTypeList;
                    profile.Samples     = samplesList;
                    profile.Locations   = locationList;
                    profile.StringTable = stringTable;
                    profile.Mappings    = mappingList;

                    while (true)
                    {
                        var tag = cis.ReadTag();
                        if (tag > 0)
                        {
                            var fieldNumber = WireFormat.GetTagFieldNumber(tag);

                            switch (fieldNumber)
                            {
                            case 1:
                                valueTypeList.Add(HandleValueType(cis));
                                break;

                            case 2:
                                samplesList.Add(HandleSample(cis));
                                break;

                            case 3:
                                mappingList.Add(HandleMapping(cis));
                                break;

                            case 4:
                                locationList.Add(HandleLocation(cis));
                                break;

                            case 5:
                                cis.SkipLastField();
                                break;

                            case 6:
                                var strLength = cis.ReadLength();
                                stringTable.Add(System.Text.Encoding.UTF8.GetString(cis.ReadRawBytes(strLength), 0, strLength));
                                break;

                            default:
                                cis.SkipLastField();
                                break;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }

            for (int i = 0; i < profile.Mappings.Count; ++i)
            {
                var mapping = profile.Mappings[i];

                var filename   = profile.StringTable[(int)mapping.FileNameIndex];
                var rangeBegin = mapping.MemoryStart;
                var rangeEnd   = mapping.MemoryLimit;

                Console.WriteLine($"Filename: {filename}, Range Start: {rangeBegin}, Rang End: {rangeEnd}");
            }
        }
Example #27
0
        private static MessageId ReadMessageId(CodedInputStream input)
        {
            var guid = ReadSingleField(input, x => x.ReadGuid());

            return(new MessageId(guid));
        }
Example #28
0
 public void MergeFrom(CodedInputStream input)
 {
 }
Example #29
0
        public override void CallServerMethod(uint token, uint methodId, CodedInputStream stream)
        {
            switch (methodId)
            {
            case 1:
            {
                FriendNotification request = new FriendNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnFriendAdded(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsListener.OnFriendAdded(bgs.protocol.friends.v1.FriendNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 2:
            {
                FriendNotification request = new FriendNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnFriendRemoved(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsListener.OnFriendRemoved(bgs.protocol.friends.v1.FriendNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 3:
            {
                InvitationNotification request = new InvitationNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnReceivedInvitationAdded(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsListener.OnReceivedInvitationAdded(bgs.protocol.friends.v1.InvitationNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 4:
            {
                InvitationNotification request = new InvitationNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnReceivedInvitationRemoved(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsListener.OnReceivedInvitationRemoved(bgs.protocol.friends.v1.InvitationNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 5:
            {
                InvitationNotification request = new InvitationNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnSentInvitationAdded(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsListener.OnSentInvitationAdded(bgs.protocol.friends.v1.InvitationNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 6:
            {
                InvitationNotification request = new InvitationNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnSentInvitationRemoved(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsListener.OnSentInvitationRemoved(bgs.protocol.friends.v1.InvitationNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 7:
            {
                UpdateFriendStateNotification request = new UpdateFriendStateNotification();
                request.MergeFrom(stream);


                BattlenetRpcErrorCode status = HandleOnUpdateFriendState(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method FriendsListener.OnUpdateFriendState(bgs.protocol.friends.v1.UpdateFriendStateNotification: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            default:
                Log.outError(LogFilter.ServiceProtobuf, "Bad method id {0}.", methodId);
                SendResponse(token, BattlenetRpcErrorCode.RpcInvalidMethod);
                break;
            }
        }
Example #30
0
    private void OnReceived(long peerId, ushort code, CodedInputStream stream)
    {
        var packetCode = (PacketCode)code;

        Debug.Log($"OnReceived PacketCode: {packetCode}");
        if (packetCode == PacketCode.EnterRes)
        {
            var enterRes   = EnterRes.Parser.ParseFrom(stream);
            var resultCode = (ResultCode)enterRes.Result;
            if (resultCode != ResultCode.Success)
            {
                Debug.Log($"EnterRes failed. ResultCode: {resultCode}");
                return;
            }

            _myPlayerId = enterRes.MyPlayer.Id;
            _myPlayer   = new PlayerObject()
            {
                Body = Instantiate(myPlayerFactory)
            };
            //_myPlayer.Body.transform.position = new Vector2(enterRes.MyPlayer.Pos.X, enterRes.MyPlayer.Pos.X);
            _myPlayer.Body.transform.position = ToViewportPos(enterRes.MyPlayer.Pos);
            //var screenPosition = Camera.main.WorldToScreenPoint(_myPlayer.Body.transform.position);
            //var nameTextMesh = _myPlayer.Body.GetComponent<TextMesh>();
            //nameTextMesh.text = enterRes.MyPlayer.Name;

            var canvas = GameObject.Find("Canvas");
            _myPlayer.Text = Instantiate(playerNameTextFactory);
            _myPlayer.Text.transform.SetParent(canvas.transform, false);

            //_myPlayer.Text.transform.position = screenPosition + new Vector3(0.0f, 24.0f, 0.0f);
            //var textPos = new PbPosition() {X = enterRes.MyPlayer.Pos.X, Y = enterRes.MyPlayer.Pos.Y + 24.0f};
            _myPlayer.Text.transform.position = GetNameTextPos(_myPlayer.Body.transform.position);
            _myPlayer.Stop = true;
            var textComponent = _myPlayer.Text.GetComponent <Text>();
            textComponent.text = enterRes.MyPlayer.Name;
        }
        else if (packetCode == PacketCode.EnterEvt)
        {
            var enterEvt = EnterEvt.Parser.ParseFrom(stream);

            foreach (var p in enterEvt.Players)
            {
                if (_myPlayerId == p.Id)
                {
                    continue;
                }

                Debug.Log($"Add Player {p.Id}, {p.Name}");

                var player = Instantiate(playerFactory);

                //player.transform.position = new Vector2(p.Pos.X, p.Pos.X);
                player.transform.position = ToViewportPos(p.Pos);

                //var screenPosition = Camera.main.WorldToScreenPoint(player.transform.position);

                var canvas         = GameObject.Find("Canvas");
                var playerNameText = Instantiate(playerNameTextFactory);
                playerNameText.transform.SetParent(canvas.transform, false);
                //playerNameText.transform.position = screenPosition + new Vector3(0.0f, 24.0f, 0.0f);
                playerNameText.transform.position = GetNameTextPos(player.transform.position);
                var textComponent = playerNameText.GetComponent <Text>();
                textComponent.text = p.Name;

                var playerObject = new PlayerObject()
                {
                    Body = player, Text = playerNameText, Trail = new Queue <Vector2>(), Stop = true
                };
                _players[p.Id] = playerObject;
            }
        }
        else if (packetCode == PacketCode.LeaveEvt)
        {
            var leaveEvt = LeaveEvt.Parser.ParseFrom(stream);
            var playerId = leaveEvt.Id;
            if (_players.ContainsKey(playerId))
            {
                var playerObject = _players[playerId];
                Destroy(playerObject.Body);
                Destroy(playerObject.Text);
                _players.Remove(playerId);
            }
        }
        else if (packetCode == PacketCode.MoveEvt)
        {
            var moveEvt  = MoveEvt.Parser.ParseFrom(stream);
            var playerId = moveEvt.Id;
            if (_players.ContainsKey(playerId))
            {
                var playerObject = _players[playerId];
                //playerObject.Body.transform.position = ToViewportPos(moveEvt.Src);
                //playerObject.DstPos = ToViewportPos(moveEvt.Dst);

                foreach (var p in moveEvt.Trail)
                {
                    playerObject.Trail.Enqueue(ToViewportPos(p));
                }

                //if (playerObject.Stop)
                //    playerObject.Stop = false;
                //Debug.DrawLine(playerObject.Body.transform.position, playerObject.DstPos);
            }
        }
        else if (packetCode == PacketCode.StopEvt)
        {
            var stopEvt  = StopEvt.Parser.ParseFrom(stream);
            var playerId = stopEvt.Id;
            if (_players.ContainsKey(playerId))
            {
                var playerObject = _players[playerId];
                //playerObject.Body.transform.position = ToViewportPos(stopEvt.Pos);
                //playerObject.Text.transform.position = GetNameTextPos(playerObject.Body.transform.position);
                playerObject.Trail.Enqueue(ToViewportPos(stopEvt.Pos));

                /*
                 * playerObject.DstPos = ToViewportPos(stopEvt.Pos);
                 * if (!playerObject.DstPos.Equals(playerObject.Body.transform.position))
                 * {
                 *  playerObject.Stop = false;
                 * }
                 */
                //playerObject.Velocity = Vector2.zero;
            }
        }
    }
Example #31
0
 public void MergeFrom(CodedInputStream input)
 {
     throw new System.NotImplementedException();
 }
 public override void ReadValue(CodedInputStream stream)
 {
 }
Example #33
0
        public void AddEntriesFrom_NonPackedInt32()
        {
            uint nonPackedTag = WireFormat.MakeTag(10, WireFormat.WireType.Varint);
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            output.WriteTag(nonPackedTag);
            output.WriteInt32(10);
            output.WriteTag(nonPackedTag);
            output.WriteInt32(999);
            output.WriteTag(nonPackedTag);
            output.WriteInt32(-1000); // Just for variety...
            output.Flush();
            stream.Position = 0;

            // Deliberately "expecting" a packed tag, but we detect that the data is
            // actually not packed.
            uint packedTag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited);
            var field = new RepeatedField<int>();
            var input = new CodedInputStream(stream);
            input.AssertNextTag(nonPackedTag);
            field.AddEntriesFrom(input, FieldCodec.ForInt32(packedTag));
            CollectionAssert.AreEqual(new[] { 10, 999, -1000 }, field);
            Assert.IsTrue(input.IsAtEnd);
        }
Example #34
0
 public static byte[] ReadSomeBytes(this CodedInputStream stream, int length)
 {
     return((byte[])readRawBytes.Invoke(stream, new object[] { length }));
 }
Example #35
0
        public void WriteTo_NonPackedInt32()
        {
            uint tag = WireFormat.MakeTag(10, WireFormat.WireType.Varint);
            var field = new RepeatedField<int> { 10, 1000, 1000000};
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            field.WriteTo(output, FieldCodec.ForInt32(tag));
            output.Flush();
            stream.Position = 0;

            var input = new CodedInputStream(stream);
            input.AssertNextTag(tag);
            Assert.AreEqual(10, input.ReadInt32());
            input.AssertNextTag(tag);
            Assert.AreEqual(1000, input.ReadInt32());
            input.AssertNextTag(tag);
            Assert.AreEqual(1000000, input.ReadInt32());
            Assert.IsTrue(input.IsAtEnd);
        }
Example #36
0
        public override void CallServerMethod(uint token, uint methodId, CodedInputStream stream)
        {
            switch (methodId)
            {
            case 12:
            {
                GameAccountHandle request = new GameAccountHandle();
                request.MergeFrom(stream);

                GameAccountBlob       response = new GameAccountBlob();
                BattlenetRpcErrorCode status   = HandleGetGameAccountBlob(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetGameAccountBlob(GameAccountHandle: {1}) returned GameAccountBlob: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 13:
            {
                GetAccountRequest request = new GetAccountRequest();
                request.MergeFrom(stream);

                GetAccountResponse    response = new GetAccountResponse();
                BattlenetRpcErrorCode status   = HandleGetAccount(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetAccount(GetAccountRequest: {1}) returned GetAccountResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 14:
            {
                CreateGameAccountRequest request = new CreateGameAccountRequest();
                request.MergeFrom(stream);

                GameAccountHandle     response = new GameAccountHandle();
                BattlenetRpcErrorCode status   = HandleCreateGameAccount(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.CreateGameAccount(CreateGameAccountRequest: {1}) returned GameAccountHandle: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 15:
            {
                IsIgrAddressRequest request = new IsIgrAddressRequest();
                request.MergeFrom(stream);

                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleIsIgrAddress(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.IsIgrAddress(IsIgrAddressRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 20:
            {
                CacheExpireRequest request = new CacheExpireRequest();
                request.MergeFrom(stream);

                BattlenetRpcErrorCode status = HandleCacheExpire(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.CacheExpire(CacheExpireRequest: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 21:
            {
                CredentialUpdateRequest request = new CredentialUpdateRequest();
                request.MergeFrom(stream);

                CredentialUpdateResponse response = new CredentialUpdateResponse();
                BattlenetRpcErrorCode    status   = HandleCredentialUpdate(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.CredentialUpdate(CredentialUpdateRequest: {1}) returned CredentialUpdateResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 25:
            {
                SubscriptionUpdateRequest request = new SubscriptionUpdateRequest();
                request.MergeFrom(stream);


                SubscriptionUpdateResponse response = new SubscriptionUpdateResponse();
                BattlenetRpcErrorCode      status   = HandleSubscribe(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.Subscribe(SubscriptionUpdateRequest: {1}) returned SubscriptionUpdateResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 26:
            {
                SubscriptionUpdateRequest request = new SubscriptionUpdateRequest();
                request.MergeFrom(stream);

                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleUnsubscribe(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.Unsubscribe(SubscriptionUpdateRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 30:
            {
                GetAccountStateRequest request = new GetAccountStateRequest();
                request.MergeFrom(stream);

                GetAccountStateResponse response = new GetAccountStateResponse();
                BattlenetRpcErrorCode   status   = HandleGetAccountState(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetAccountState(GetAccountStateRequest: {1}) returned GetAccountStateResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 31:
            {
                GetGameAccountStateRequest request = new GetGameAccountStateRequest();
                request.MergeFrom(stream);

                GetGameAccountStateResponse response = new GetGameAccountStateResponse();
                BattlenetRpcErrorCode       status   = HandleGetGameAccountState(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetGameAccountState(GetGameAccountStateRequest: {1}) returned GetGameAccountStateResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 32:
            {
                GetLicensesRequest request = new GetLicensesRequest();
                request.MergeFrom(stream);

                GetLicensesResponse   response = new GetLicensesResponse();
                BattlenetRpcErrorCode status   = HandleGetLicenses(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetLicenses(GetLicensesRequest: {1}) returned GetLicensesResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 33:
            {
                GetGameTimeRemainingInfoRequest request = new GetGameTimeRemainingInfoRequest();
                request.MergeFrom(stream);

                GetGameTimeRemainingInfoResponse response = new GetGameTimeRemainingInfoResponse();
                BattlenetRpcErrorCode            status   = HandleGetGameTimeRemainingInfo(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetGameTimeRemainingInfo(GetGameTimeRemainingInfoRequest: {1}) returned GetGameTimeRemainingInfoResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 34:
            {
                GetGameSessionInfoRequest request = new GetGameSessionInfoRequest();
                request.MergeFrom(stream);

                GetGameSessionInfoResponse response = new GetGameSessionInfoResponse();
                BattlenetRpcErrorCode      status   = HandleGetGameSessionInfo(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetGameSessionInfo(GetGameSessionInfoRequest: {1}) returned GetGameSessionInfoResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 35:
            {
                GetCAISInfoRequest request = new GetCAISInfoRequest();
                request.MergeFrom(stream);

                GetCAISInfoResponse   response = new GetCAISInfoResponse();
                BattlenetRpcErrorCode status   = HandleGetCAISInfo(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetCAISInfo(GetCAISInfoRequest: {1}) returned GetCAISInfoResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 36:
            {
                ForwardCacheExpireRequest request = new ForwardCacheExpireRequest();
                request.MergeFrom(stream);

                NoData response = new NoData();
                BattlenetRpcErrorCode status = HandleForwardCacheExpire(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.ForwardCacheExpire(ForwardCacheExpireRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 37:
            {
                GetAuthorizedDataRequest request = new GetAuthorizedDataRequest();
                request.MergeFrom(stream);

                GetAuthorizedDataResponse response = new GetAuthorizedDataResponse();
                BattlenetRpcErrorCode     status   = HandleGetAuthorizedData(request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetAuthorizedData(GetAuthorizedDataRequest: {1}) returned GetAuthorizedDataResponse: {2} status: {3}.",
                             GetCallerInfo(), request.ToString(), response.ToString(), status);
                if (status == 0)
                {
                    SendResponse(token, response);
                }
                else
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 38:
            {
                AccountFlagUpdateRequest request = new AccountFlagUpdateRequest();
                request.MergeFrom(stream);

                BattlenetRpcErrorCode status = HandleAccountFlagUpdate(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.AccountFlagUpdate(AccountFlagUpdateRequest: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 39:
            {
                GameAccountFlagUpdateRequest request = new GameAccountFlagUpdateRequest();
                request.MergeFrom(stream);

                BattlenetRpcErrorCode status = HandleGameAccountFlagUpdate(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GameAccountFlagUpdate(GameAccountFlagUpdateRequest: {1}) status: {2}.",
                             GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            /* case 40:
             *   {
             *       UpdateParentalControlsAndCAISRequest request = new UpdateParentalControlsAndCAISRequest();
             *       request.MergeFrom(stream);
             *
             *       NoData response = new NoData();
             *       BattlenetRpcErrorCode status = HandleUpdateParentalControlsAndCAIS(request, response);
             *       Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.UpdateParentalControlsAndCAIS(UpdateParentalControlsAndCAISRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
             *         GetCallerInfo(), request.ToString(), response.ToString(), status);
             *       if (status == 0)
             *           SendResponse(token, response);
             *       else
             *           SendResponse(token, status);
             *       break;
             *   }
             * case 41:
             *   {
             *       CreateGameAccountRequest request = new CreateGameAccountRequest();
             *       request.MergeFrom(stream);
             *
             *       CreateGameAccountResponse response = new CreateGameAccountResponse();
             *       BattlenetRpcErrorCode status = HandleCreateGameAccount2(request, response);
             *       Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.CreateGameAccount2(CreateGameAccountRequest: {1}) returned CreateGameAccountResponse: {2} status: {3}.",
             *         GetCallerInfo(), request.ToString(), response.ToString(), status);
             *       if (status == 0)
             *           SendResponse(token, response);
             *       else
             *           SendResponse(token, status);
             *       break;
             *   }
             * case 42:
             *   {
             *       GetGameAccountRequest request = new GetGameAccountRequest();
             *       request.MergeFrom(stream);
             *
             *       GetGameAccountResponse response = new GetGameAccountResponse();
             *       BattlenetRpcErrorCode status = HandleGetGameAccount(request, response);
             *       Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.GetGameAccount(GetGameAccountRequest: {1}) returned GetGameAccountResponse: {2} status: {3}.",
             *         GetCallerInfo(), request.ToString(), response.ToString(), status);
             *       if (status == 0)
             *           SendResponse(token, &response);
             *       else
             *           SendResponse(token, status);
             *       break;
             *   }
             * case 43:
             *   {
             *       QueueDeductRecordRequest request = new QueueDeductRecordRequest();
             *       request.MergeFrom(stream);
             *
             *       NoData response = new NoData();
             *       BattlenetRpcErrorCode status = HandleQueueDeductRecord(request, response);
             *       Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountService.QueueDeductRecord(QueueDeductRecordRequest: {1}) returned bgs.protocol.NoData: {2} status: {3}.",
             *         GetCallerInfo(), request.ToString(), response.ToString(), status);
             *       if (status == 0)
             *           SendResponse(token, response);
             *       else
             *           SendResponse(token, status);
             *       break;
             *   }*/
            default:
                Log.outError(LogFilter.ServiceProtobuf, "Bad method id {0}.", methodId);
                SendResponse(token, BattlenetRpcErrorCode.RpcInvalidMethod);
                break;
            }
        }
Example #37
0
        public void WriteTo_Message()
        {
            var message1 = new ForeignMessage { C = 20 };
            var message2 = new ForeignMessage { C = 25 };
            uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited);
            var field = new RepeatedField<ForeignMessage> { message1, message2 };
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);
            field.WriteTo(output, FieldCodec.ForMessage(tag, ForeignMessage.Parser));
            output.Flush();
            stream.Position = 0;

            var input = new CodedInputStream(stream);
            input.AssertNextTag(tag);
            Assert.AreEqual(message1, input.ReadMessage(ForeignMessage.Parser));
            input.AssertNextTag(tag);
            Assert.AreEqual(message2, input.ReadMessage(ForeignMessage.Parser));
            Assert.IsTrue(input.IsAtEnd);
        }
Example #38
0
        public override void CallServerMethod(uint token, uint methodId, CodedInputStream stream)
        {
            switch (methodId)
            {
            case 1:
            {
                AccountStateNotification request = new AccountStateNotification();
                request.MergeFrom(stream);

                BattlenetRpcErrorCode status = HandleOnAccountStateUpdated(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountListener.OnAccountStateUpdated(AccountStateNotification: {1} status: {2}.", GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 2:
            {
                GameAccountStateNotification request = new GameAccountStateNotification();
                request.MergeFrom(stream);

                BattlenetRpcErrorCode status = HandleOnGameAccountStateUpdated(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountListener.OnGameAccountStateUpdated(GameAccountStateNotification: {1} status: {2}.", GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 3:
            {
                GameAccountNotification request = new GameAccountNotification();
                request.MergeFrom(stream);

                BattlenetRpcErrorCode status = HandleOnGameAccountsUpdated(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountListener.OnGameAccountsUpdated(GameAccountNotification: {1} status: {2}.", GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            case 4:
            {
                GameAccountSessionNotification request = new GameAccountSessionNotification();
                request.MergeFrom(stream);

                BattlenetRpcErrorCode status = HandleOnGameSessionUpdated(request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server method AccountListener.OnGameSessionUpdated(GameAccountSessionNotification: {1} status: {2}.", GetCallerInfo(), request.ToString(), status);
                if (status != 0)
                {
                    SendResponse(token, status);
                }
                break;
            }

            default:
                Log.outError(LogFilter.ServiceProtobuf, "Bad method id {0}.", methodId);
                SendResponse(token, BattlenetRpcErrorCode.RpcInvalidMethod);
                break;
            }
        }
Example #39
0
        public void TestNegativeEnumPackedArray()
        {
            int arraySize = 1 + (10 * 5);
            int msgSize = 1 + 1 + arraySize;
            byte[] bytes = new byte[msgSize];
            CodedOutputStream output = new CodedOutputStream(bytes);
            // Length-delimited to show we want the packed representation
            uint tag = WireFormat.MakeTag(8, WireFormat.WireType.LengthDelimited);
            output.WriteTag(tag);
            int size = 0;
            for (int i = 0; i >= -5; i--)
            {
                size += CodedOutputStream.ComputeEnumSize(i);
            }
            output.WriteRawVarint32((uint)size);
            for (int i = 0; i >= -5; i--)
            {
                output.WriteEnum(i);
            }
            Assert.AreEqual(0, output.SpaceLeft);

            CodedInputStream input = new CodedInputStream(bytes);
            tag = input.ReadTag();

            RepeatedField<SampleEnum> values = new RepeatedField<SampleEnum>();
            values.AddEntriesFrom(input, FieldCodec.ForEnum(tag, x => (int)x, x => (SampleEnum)x));

            Assert.AreEqual(6, values.Count);
            Assert.AreEqual(SampleEnum.None, values[0]);
            Assert.AreEqual(((SampleEnum)(-1)), values[1]);
            Assert.AreEqual(SampleEnum.NegativeValue, values[2]);
            Assert.AreEqual(((SampleEnum)(-3)), values[3]);
            Assert.AreEqual(((SampleEnum)(-4)), values[4]);
            Assert.AreEqual(((SampleEnum)(-5)), values[5]);
        }
Example #40
0
        public virtual IMessageLite OnExecute(IClientContext client, RpcRequestHeader requestHeader,
                                              CodedInputStream input, RpcResponseHeader.Builder responseHeader)
        {
            RpcCallContext previous = RpcCallContext.g_current;
            try
            {
                responseHeader.SetMessageId(requestHeader.MessageId);
                requestHeader.CallContext.Client = client;
                RpcCallContext.g_current = requestHeader.CallContext;

                IMessageLite responseBody = CallMethod(requestHeader, input);

                if (RpcCallContext.g_current != null && !requestHeader.CallContext.Equals(RpcCallContext.g_current))
                {
                    responseHeader.SetCallContext(RpcCallContext.g_current);
                }

                return responseBody;
            }
            catch (Exception ex)
            {
                OnException(requestHeader, responseHeader, ex);
                return RpcVoid.DefaultInstance;
            }
            finally
            {
                RpcCallContext.g_current = previous;
            }
        }