Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }
Exemple #3
0
 public static MessageQueueManage getInstance()
 {
     if (s_queueManage == null)
     {
         s_queueManage = new MessageQueueManage();
     }
     return(s_queueManage);
 }
Exemple #4
0
    private void SendBySocket()
    {
        //从消息队列中取一条消息数据
        MessageStruct message = MessageQueueManage.getInstance().getWillSendData();

        if (message != null && _socketCon.Send(message.body))
        {
            Debug.Log("发送消息 dest=" + message.dest + ",cmd=" + message.cmd + " 成功 !");
        }
    }
Exemple #5
0
    //关闭连接
    public void Close()
    {
        setNetStatus(2);

        if (_socketCon != null)
        {
            _socketCon.Close();
            _socketCon = null;
        }

        MessageQueueManage.getInstance().clearData();
    }
Exemple #6
0
    //获取消息队列第一个数据
    public MessageStruct getCMsg()
    {
        MessageStruct message = MessageQueueManage.getInstance().getYetReceData();

        return(message);
    }