示例#1
0
        /// <summary>
        /// 发送消息到指定的session类型
        /// </summary>
        /// <param name="sessionType">session类型</param>
        /// <param name="data">需要发送的数据</param>
        /// <param name="offset">data的偏移量</param>
        /// <param name="size">data的有用的数据长度</param>
        /// <param name="msgID">消息id</param>
        /// <param name="once">在查询消息类型时是否只对第一个结果生效</param>
        public void SendMsgToSession(SessionType sessionType, byte[] data, int offset, int size, int msgID, bool once = true)
        {
            StreamBuffer sBuffer = StreamBufferPool.Pop();

            sBuffer.Write(size + 2 * sizeof(int));
            sBuffer.Write(msgID);
            sBuffer.Write(data, offset, size);
            byte[] buffer = sBuffer.ToArray();
            StreamBufferPool.Push(sBuffer);
            this.Send(sessionType, buffer, once);
        }
示例#2
0
        /// <summary>
        /// 发送消息到指定session,通常该消息是一条转发消息
        /// </summary>
        /// <param name="sessionType">session类型</param>
        /// <param name="data">需要发送的数据</param>
        /// <param name="offset">data的偏移量</param>
        /// <param name="size">data的有用的数据长度</param>
        /// <param name="msgID">中介端需要处理的消息id</param>
        /// <param name="transID">目标端需要处理的消息id</param>
        /// <param name="gcNet">目标端的网络id</param>
        /// <param name="once">在查询消息类型时是否只对第一个结果生效</param>
        public void TranMsgToSession(SessionType sessionType, byte[] data, int offset, int size, int msgID, int transID, uint gcNet, bool once = true)
        {
            transID = transID == 0 ? msgID : transID;
            StreamBuffer sBuffer = StreamBufferPool.Pop();

            sBuffer.Write(size + 4 * sizeof(int));
            sBuffer.Write(transID);
            sBuffer.Write(msgID);
            sBuffer.Write(gcNet);
            sBuffer.Write(data, offset, size);
            byte[] buffer = sBuffer.ToArray();
            StreamBufferPool.Push(sBuffer);
            this.Send(sessionType, buffer, once);
        }