/// <summary> /// Read Request /// </summary> /// <param name="request"></param> /// <returns></returns> protected override IQueueMessage ReadRequest(HttpRequestInfo request) { //throw new Exception("Not implemented."); MessageStream stream = null; if (request.BodyStream != null) { stream = MessageStream.ParseStream(request.BodyStream, NetProtocol.Http); } else { var message = new HttpMessage(); if (request.QueryString != null)//request.BodyType == HttpBodyType.QueryString) { message.EntityRead(request.QueryString, null); } else if (request.Body != null) { message.EntityRead(request.Body, null); } //else if (request.Url.LocalPath != null && request.Url.LocalPath.Length > 1) // message.EntityRead(request.Url.LocalPath.TrimStart('/').TrimEnd('/'), null); stream = message; } return(new QueueRequest(stream.GetStream())); }
protected override void Parse(ref BitStreamReader bsr) { PacketInfo = new CmdInfo[DemoInfo.MaxSplitscreenPlayers]; for (int i = 0; i < PacketInfo.Length; i++) { PacketInfo[i] = new CmdInfo(DemoRef); PacketInfo[i].ParseStream(ref bsr); } InSequence = bsr.ReadUInt(); OutSequence = bsr.ReadUInt(); MessageStream = new MessageStream(DemoRef); MessageStream.ParseStream(ref bsr); // After we're doing with the packet, we can process all the messages. // Most things should be processed during parsing, but any additional checks should be done here. var netTickMessages = MessageStream.Where(tuple => tuple.messageType == MessageType.NetTick).ToList(); if (netTickMessages.Count > 1) { DemoRef.LogError("there's more than 2 net tick messages in this packet"); } NetTick?tickInfo = (NetTick?)netTickMessages.FirstOrDefault().message; if (tickInfo != null) { if (DemoRef.EntitySnapshot != null) { DemoRef.EntitySnapshot.EngineTick = tickInfo.EngineTick; } } // todo fill prop handles with data here TimingAdjustment.AdjustFromPacket(this); }