Ejemplo n.º 1
0
    /// <summary>
    /// Recieve Netmsg from socket & store to buffer
    /// </summary>
    void RecieveNetMsg(byte[] data, int size)
    {
        if (!mRecieveStream.Write(data, size))
        {
            Disconnect();
            return;
        }

        while (true)
        {
            NetMsgDef  msg  = null;
            NetMsgHead head = null;

            if (!mRecieveStream.Read(ref head))                         //Cant read msg head
            {
                break;
            }
            if (mRecieveStream.RemainReadCap < (uint)head.mSize - sizeof(short))        //Package is not completed, wait to next frame
            {
                //Restore ReadPos
                mRecieveStream.ShiftReadPos(-4);
                break;
            }
            byte[] btsData = new byte[head.mSize - sizeof(short)];
            if (!mRecieveStream.Read(btsData, head.mSize - sizeof(short)))
            {
                break;
            }
            msg = new NetMsgDef(head, btsData);
            lock (mRecieveMsgQueue)
            {
                mRecieveMsgQueue.Enqueue(msg);
            }
        }
    }
Ejemplo n.º 2
0
 // 构造、析构函数
 #region
 public DataBufferPool()
 {
     reservedSize       = 0;
     sendBufferSize     = 0;
     sendBufferExtend   = 0;
     rcvBufferSize      = 0;
     rcvBufferExtend    = 0;
     rcvDataBufList     = null;
     sendDataBufMgrList = null;
     netMsgHead         = new NetMsgHead();
     netMsgHeadLength   = Marshal.SizeOf(netMsgHead);
 }
Ejemplo n.º 3
0
 public bool Write(NetMsgHead haed)
 {
     if (!Write(haed.mSize))
     {
         return(false);
     }
     if (!Write(haed.mCmdID))
     {
         return(false);
     }
     return(true);
 }
Ejemplo n.º 4
0
    public bool Read(ref NetMsgDef msg)
    {
        msg = null;
        NetMsgHead head = null;

        if (!Read(ref head))
        {
            return(false);
        }
        byte[] btsData = new byte[head.mSize];
        if (!Read(btsData, head.mSize))
        {
            return(false);
        }
        msg = new NetMsgDef(head, btsData);
        return(true);
    }
Ejemplo n.º 5
0
    public bool Read(ref NetMsgHead head)
    {
        head = null;
        short cmdID;
        short size;

        if (!Read(out size))
        {
            return(false);
        }
        if (!Read(out cmdID))
        {
            return(false);
        }
        head = new NetMsgHead(cmdID, size);
        return(true);
    }
Ejemplo n.º 6
0
    /// <summary>
    /// 创建一个RPC消息
    /// </summary>
    public static NetMsgDef CreateRpcMsg(short cmdID, byte[] data)
    {
        NetMsgHead msgHead = new NetMsgHead(cmdID, (short)(data.Length + 2));

        return(new NetMsgDef(msgHead, data));
    }
Ejemplo n.º 7
0
 public NetMsgDef(NetMsgHead head, byte[] data)
 {
     mMsgHead = head;
     mBtsData = data;
 }