public void Parse(Stream source) { CMsg cmsg = ProtoBuf.Serializer.Deserialize <CMsg>(source); int cmd = cmsg.cmd; int dest = cmsg.dest; long serverTime = cmsg.serverTime; byte[] body = cmsg.body; //消息号保存进队列 PBNO _pb = new PBNO(); _pb.msg = cmsg; _pb.pbInstance = null; //分发协议去解析 _pb.pbInstance = pb.ParseData(dest, cmd, body); if (IsOftenData(dest, cmd)) { net.PushDataScene(_pb); } else { net.PushDataQueue(_pb); } Debug.Log("收到消息 dest=" + dest + ",cmd=" + cmd); }
//解析协议信息 private void ParseDataByPbManage(Stream source) { CMsg cmsg = ProtoBuf.Serializer.Deserialize <CMsg>(source); int cmd = cmsg.cmd; int dest = cmsg.dest; long serverTime = cmsg.serverTime; byte[] body = cmsg.body; //消息号保存进队列 PBNO _pb = new PBNO(); _pb.msg = cmsg; //分发协议去解析 pbManage.ParseData(dest, cmd, body); if (IsOftenData(dest, cmd)) { recDataScene.Enqueue(_pb); } else { recDataQueue.Enqueue(_pb); } Debug.Log("收到消息 dest=" + dest + ",cmd=" + cmd); }
public global::ProtoBuf.IExtensible getOftenData(ref int dest, ref int cmd) { if (recDataScene.Count <= 0) { return(null); } PBNO _msg = recDataScene.Dequeue(); dest = _msg.msg.dest; cmd = _msg.msg.cmd; return(_msg.pbInstance); }
public PBNO getOftenData(ref int dest, ref int cmd) { if (recDataScene.Count <= 0) { return(null); } PBNO _msg = recDataScene.Dequeue(); dest = _msg.msg.dest; cmd = _msg.msg.cmd; return(_msg); }
//获取消息队列第一个数据 public void getCMsg(ref int dest, ref int cmd) { //发送消息 pbnoCurr.setNull(); //PBNO _msg=new PBNO(); 每一帧都new一个 也许会影响效率 if (recDataQueue.Count > 0) { PBNO _msg = recDataQueue.Dequeue(); dest = _msg.msg.dest; cmd = _msg.msg.cmd; STime = _msg.msg.serverTime; pbnoCurr.msg = _msg.msg; _msg.setNull(); } }
public object DeserializeData(object source) { Debug.Log("DeserializeData"); if (source == null) { return(null); } Stream stream = (Stream)source; CMsg cmsg = ProtoBuf.Serializer.Deserialize <CMsg>(stream); int cmd = cmsg.cmd; int dest = cmsg.dest; long serverTime = cmsg.serverTime; byte[] body = cmsg.body; //消息号保存进队列 PBNO _pb = new PBNO(); _pb.msg = cmsg; //分发协议去解析 PBParseManage.getInstance().ParseData(dest, cmd, body); if (NetWorkManage.getInstance().IsOftenData(dest, cmd)) { NetWorkManage.getInstance().PushReceDataScene(_pb); } else { NetWorkManage.getInstance().PushReceDataQueue(_pb); } Debug.Log("收到消息 dest=" + dest + ",cmd=" + cmd); return(null); }
public void PushReceDataQueue(PBNO _pb) { recDataQueue.Enqueue(_pb); }
public void PushDataScene(PBNO _pb) { recDataScene.Enqueue(_pb); }