static void Serialize(ProtoBuf.IExtensible message) { PlayerPrefs.SetInt("Version", 1); byte[] buf = null; using (var mem = new MemoryStream()) { ProtoBuf.Serializer.Serialize(mem, message); buf = mem.ToArray(); } PlayerPrefs.SetString("UserData", Convert.ToBase64String(Crypto.Encode(buf))); Debug.Log("Serialize: " + message.Dump()); }
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); } }
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]的网络接收日志 } }
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 static void LogReceive(ProtoBuf.IExtensible msg) { var str = msg != null?msg.Dump() : "null"; Debug.Log("<color=yellow>[RECV]</color>" + str); }
public static void LogSend(ProtoBuf.IExtensible msg) { var str = msg != null?msg.Dump() : "null"; Debug.Log("<color=green>[SEND]</color>" + str); }