public void DeserializeData(ReceDataStruct source) { if (source == null) { return; } Stream stream = new MemoryStream(source.data, 0, source.datalen); CMsg cmsg = ProtoBuf.Serializer.Deserialize <CMsg>(stream); //消息号保存进队列 MessageStruct message = new MessageStruct(); message.cmd = cmsg.cmd; message.dest = cmsg.dest; message.body = cmsg.body; message.serverTime = cmsg.serverTime; //分发协议去解析 if (onDispense != null) { onDispense(message); } //放到消息队列 MessageQueueManage.getInstance().PushYetReceData(message); Debug.Log("收到消息 dest=" + cmsg.dest + ",cmd=" + cmsg.cmd); }
public void SerializeData(SendDataStruct data) { MemoryStream memStream = new MemoryStream(); ProtoBuf.Serializer.Serialize(memStream, data.instance); byte[] body = memStream.ToArray(); CMsg msg = new CMsg(); msg.dest = data.dest; msg.cmd = data.cmd; if (body != null && body.Length > 0) { msg.body = body; } //放在消息队列里面发 MessageStruct smsg = new MessageStruct(); smsg.dest = data.dest; smsg.cmd = data.cmd; smsg.body = (byte[])Serialize(msg); MessageQueueManage.getInstance().PushWillSendData(smsg); }
public static MessageQueueManage getInstance() { if (s_queueManage == null) { s_queueManage = new MessageQueueManage(); } return(s_queueManage); }
private void SendBySocket() { //从消息队列中取一条消息数据 MessageStruct message = MessageQueueManage.getInstance().getWillSendData(); if (message != null && _socketCon.Send(message.body)) { Debug.Log("发送消息 dest=" + message.dest + ",cmd=" + message.cmd + " 成功 !"); } }
//关闭连接 public void Close() { setNetStatus(2); if (_socketCon != null) { _socketCon.Close(); _socketCon = null; } MessageQueueManage.getInstance().clearData(); }
//获取消息队列第一个数据 public MessageStruct getCMsg() { MessageStruct message = MessageQueueManage.getInstance().getYetReceData(); return(message); }