Пример #1
0
        /// <summary>
        /// 服务端使用的构造函数
        /// </summary>
        /// <param name="servlet"></param>
        public BinaryDataParser(HttpServlet servlet)
        {
            string strContent = servlet.getContentText();
            stream = new BinaryStream();
            mSession = SessionMgr.GetIns().CreateSession(servlet);

            stream.SetContent(Convert.FromBase64String(strContent));
        }
Пример #2
0
 /// <summary>
 /// 客户端使用的构造函数
 /// </summary>
 public BinaryDataParser()
 {
     mSession = SessionMgr.GetIns().CreateSession();
     stream = new BinaryStream();
 }
Пример #3
0
        /// <summary>
        /// 调用序列化数据:客户端将消息体序列化成字符串发送给服务器
        /// </summary>
        public byte[] SerializeMsg(Message msg)
        {
            BinaryStream bs = new BinaryStream();
            bs.DeconstructMessage();
            int nMsgCount = 1;
            bs.Write(nMsgCount);

            msg.DeconstructObj();
            byte[] msgData = msg.GetWriteBuffer();
            bs.Write(msgData);

            byte[] bySend = bs.GetWriteBuffer();

            return bySend;
        }
Пример #4
0
        // 子线程调用
        public void ParseAndAddMsg(long lSessionId)
        {
            lock (mSendLocker)
            {
                BinaryStream bs = new BinaryStream();
                bs.DeconstructMessage();
                int nMsgCount = mSendMsgs.Count;
                bs.Write(nMsgCount);
                for (int i = 0; i < nMsgCount; ++i)
                {
                    Message msg = mSendMsgs.Dequeue();
                    msg.DeconstructObj();
                    bs.Write(msg.GetWriteBuffer());
                }

                RespondObj resObj = new RespondObj();
                resObj.SessionId = lSessionId;
                resObj.RespondString = Convert.ToBase64String(bs.GetWriteBuffer());
                // 加入到待发送列表即可
                MsgHandler.GetIns().AddRespondMsg(resObj);
            }
        }