/// <summary> /// 收到fast请求 /// </summary> /// <param name="context">上下文</param> /// <returns></returns> private Task OnFastRequestAsync(IContenxt context) { var fastPacket = default(FastPacket); if (FastPacket.Parse(context.StreamReader, out fastPacket) == false) { return(this.Next.Invoke(context)); } // 数据未完整 if (fastPacket == null) { var wrapper = new FastSession(context.Session, this); context.Session.SetProtocolWrapper(Protocol.Fast, wrapper); return(TaskExtend.CompletedTask); } if (context.Session.Protocol == Protocol.None) { var wrapper = new FastSession(context.Session, this); context.Session.SetProtocolWrapper(Protocol.Fast, wrapper); } var fastSession = (FastSession)context.Session.Wrapper; var fastPackets = this.GenerateFastPackets(context, fastPacket); foreach (var packet in fastPackets) { var requestContext = new RequestContext(fastSession, packet, context.AllSessions); this.OnRecvFastPacketAsync(requestContext); } return(TaskExtend.CompletedTask); }
/// <summary> /// 生成数据包 /// </summary> /// <param name="streamReader">数据流</param> /// <returns></returns> private IList <FastPacket> GenerateFastPackets(ISessionStreamReader streamReader) { var list = new List <FastPacket>(); while (true) { var packet = default(FastPacket); if (FastPacket.Parse(streamReader, out packet) == false) { return(list); } if (packet == null) { return(list); } list.Add(packet); } }
/// <summary> /// 生成数据包 /// </summary> /// <param name="context">上下文</param> /// <param name="fastPacket">数据包</param> /// <returns></returns> private IList <FastPacket> GenerateFastPackets(IContenxt context, FastPacket fastPacket) { var list = new List <FastPacket> { fastPacket }; while (true) { var packet = default(FastPacket); if (FastPacket.Parse(context.StreamReader, out packet) == false) { return(list); } if (packet == null) { return(list); } list.Add(packet); } }