コード例 #1
0
    private void Execute(Pmd.ForwardNullUserPmd_CS cmd)
    {
        var raw = VarlenProtobufCommandSerializer.Instance().Deserialize(cmd);

        msgIndex = cmd.seq;
        PushCmd(raw);
    }
コード例 #2
0
ファイル: NetService.cs プロジェクト: zuojiashun/src
    public void Send(ProtoBuf.IExtensible cmd)
    {
        if (netLink == null)
        {
            return;
        }

        try
        {
            var package = VarlenProtobufCommandSerializer.Instance().Serialize(cmd);
            var ok      = packageSerializer.Write(package, netLink, bFirstMsg);
            if (ok)
            {
                bFirstMsg = false;
                if ((cmd is Pmd.ForwardBwNullUserPmd_CS) == false && LogFilter(cmd))
                {
                    if (Engine.Utility.Log.MaxLogLevel >= Engine.Utility.LogLevel.LogLevel_Group)
                    {
                        Engine.Utility.Log.LogGroup(GameDefine.LogGroup.Net, "<color=green>[SEND]</color>{0}: {1}\n{2}", VarlenProtobufCommandSerializer.Instance()[cmd.GetType()], cmd.GetType().Name, cmd.Dump());
                    }
                }
            }
            else
            {
                if (Engine.Utility.Log.MaxLogLevel >= Engine.Utility.LogLevel.LogLevel_Group)
                {
                    Engine.Utility.Log.LogGroup(GameDefine.LogGroup.Net, "<color=red>[SEND ERROR]</color>{0}: {1}\n{2}", VarlenProtobufCommandSerializer.Instance()[cmd.GetType()], cmd.GetType().Name, cmd.Dump());
                }
            }
        }
        catch (Exception ex)
        {
            packageSerializer.OnError(ex);
        }
    }
コード例 #3
0
 public void Execute(Pmd.ForwardBwNullUserPmd_CS cmd)
 {
     try
     {
         ISerializable msg = VarlenProtobufCommandSerializer.Instance().Deserialize(cmd);
         PushCmd(msg);
     }
     catch (System.Exception ex)
     {
         Engine.Utility.Log.Error("解析网络消息出错!");
     }
 }
コード例 #4
0
    void DispatchMessage()
    {
        ProtoBuf.IExtensible proto = null;

        //if (receivedQueueProtobuf.TryDequeue(out proto))
        //{
        //    if (dispatcherProtobuf.Dispatch(proto) == false)
        //    {
        //        var tag = VarlenProtobufCommandSerializer.Instance().rawCommandSerializer[proto.GetType()];
        //        Engine.Utility.Log.Trace("<color=red>[RECV]</color>未处理的消息: {0} {1}\n{2}", tag, proto.GetType(), proto.Dump());
        //    }
        //}

        while (receivedQueueMessage.Count > 0)
        {
            proto = receivedQueueMessage.Dequeue();

            /*
             * INetLinkMonitor montitor = NetService.Instance.CurrentMoniter;
             * if (montitor != null)
             * {
             *  var dic = montitor.GetMessageData();
             *  string name = proto.GetType().Name;
             *  if (dic.ContainsKey(name))
             *  {
             *      uint num = dic[name];
             *      dic[name] = num + 1;
             *  }
             *  else
             *  {
             *      montitor.SetMontitorMessage(name, 1);
             *  }
             * }
             */
            if (dispatcherProtobuf.Dispatch(proto) == false)
            {
                if (Engine.Utility.Log.MaxLogLevel >= Engine.Utility.LogLevel.LogLevel_Group)
                {
                    var tag = VarlenProtobufCommandSerializer.Instance().rawCommandSerializer[proto.GetType()];
                    Engine.Utility.Log.Trace("<color=red>[RECV]</color>未处理的消息: {0} {1}\n{2}", tag, proto.GetType(), proto.Dump());
                }
            }
        }
    }
コード例 #5
0
    public void PushCmd(ISerializable message)
    {
        if (message == null)
        {
            return;
        }

        var batch = message as t_ZipCmdPackNullCmd;

        if (batch != null)
        {
            foreach (var c in batch.Parse(VarlenProtobufCommandSerializer.Instance().rawCommandSerializer))
            {
                PushCmd(c);
            }
            return;
        }
        receivedQueueRaw.Enqueue(message);
        // [RECV]的网络接收日志
        // Engine.Utility.Log.Trace("old msg <color=yellow>[RECV]</color>{0}: {1}\n{2}", VarlenProtobufCommandSerializer.Instance().rawCommandSerializer[message.GetType()], message.GetType().Name, message.Dump());
    }
コード例 #6
0
ファイル: NetService.cs プロジェクト: zuojiashun/src
 public void Init()
 {
     netLink = NetWork.Instance().CreateNetLink(netLinkSink, netLinkMoniter);
     netLinkMoniter.IsOpen = true;
     VarlenProtobufCommandSerializer.Instance().Register(Assembly.GetExecutingAssembly());
 }
コード例 #7
0
    private void PushCmd(ProtoBuf.IExtensible message)
    {
        if (message == null)
        {
            return;
        }

        //老协议,转换
        var raw = message as Pmd.ForwardBwNullUserPmd_CS;

        if (raw != null)
        {
            Execute(raw);
            return;
        }


        var rawNull = message as Pmd.ForwardNullUserPmd_CS;

        if (rawNull != null)
        {
            Execute(rawNull);
            return;
        }
        if (Protocol.Instance.IsReconnecting)
        {
            if (Engine.Utility.Log.MaxLogLevel >= Engine.Utility.LogLevel.LogLevel_Group)
            {
                Log.LogGroup("ZDY", "重连第一个message name " + message.GetType().Name);
            }
            if (message.GetType().Namespace.Equals("GameCmd"))
            {
                if (message is GameCmd.stLoginStepSelectUserCmd)
                {
                    isReConnectByLogin = true;
                    GameCmd.stLoginStepSelectUserCmd cmd = message as GameCmd.stLoginStepSelectUserCmd;
                    if (cmd.step == GameCmd.LoginStep.LOGIN_SCENE)
                    {
                        Log.Error("收到消息是LOGIN_SCENE,走重新登录流程");
                        isReConnectByLogin = false;
                        Protocol.Instance.SetReconnect(false, true);
                    }
                }
            }
            else
            {//非登录流程 任意一个消息代表重连成功
                if (!isReConnectByLogin)
                {
                    if (Engine.Utility.Log.MaxLogLevel >= Engine.Utility.LogLevel.LogLevel_Group)
                    {
                        Log.LogGroup("ZDY", "不走重新登录 重连第一个message name " + message.GetType().Name);
                    }
                    Protocol.Instance.SetReconnect(false, false);
                }
            }
        }

        //receivedQueueProtobuf.Enqueue(message);
        receivedQueueMessage.Enqueue(message);

        if (NetService.LogFilter(message))
        {
            if (Engine.Utility.Log.MaxLogLevel >= Engine.Utility.LogLevel.LogLevel_Group)
            {
                Engine.Utility.Log.LogGroup(GameDefine.LogGroup.Net, "<color=yellow>[RECV]</color>{0}: {1}\n{2}", VarlenProtobufCommandSerializer.Instance()[message.GetType()], message.GetType().Name, message.Dump());
            }
            // [RECV]的网络接收日志
        }
    }