예제 #1
0
    private void OnReceiveData()
    {
        int    count = 0;
        object msg   = null;

        try
        {
            if (Packer.Decode(_recBuffer.Bytes, _recBuffer.ReadIdx, _recBuffer.Length, out msg, out count))
            {
                _recBuffer.MoveReadIdx(count);
                _recBuffer.CheckAndMoveBytes();
                lock (_msgList)
                {
                    _msgList.Add(msg);
                }

                if (_recBuffer.Length > 2)// 解下一个包
                {
                    OnReceiveData();
                }
            }
        }
        catch (Exception e)
        {
            NetMsgDispatcher.Trigger(MSG_ERROR, e);
            Close(e.ToString());
        }
    }