private void Execute(Pmd.ForwardNullUserPmd_CS cmd) { var raw = VarlenProtobufCommandSerializer.Instance().Deserialize(cmd); msgIndex = cmd.seq; PushCmd(raw); }
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); } }
public void Execute(Pmd.ForwardBwNullUserPmd_CS cmd) { try { ISerializable msg = VarlenProtobufCommandSerializer.Instance().Deserialize(cmd); PushCmd(msg); } catch (System.Exception ex) { Engine.Utility.Log.Error("解析网络消息出错!"); } }
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()); } } } }
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()); }
public void Init() { netLink = NetWork.Instance().CreateNetLink(netLinkSink, netLinkMoniter); netLinkMoniter.IsOpen = true; VarlenProtobufCommandSerializer.Instance().Register(Assembly.GetExecutingAssembly()); }
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]的网络接收日志 } }