/// <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); }
/// <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); }