private void OnReveive(IClient c, ClientReceiveArgs reader) { PipeStream stream = reader.Stream.ToPipeStream(); if (Status >= RequestStatus.Responding) { ResponseStatus(stream); ResponseHeader(stream); ResponseBody(stream); } else { stream.ReadFree((int)stream.Length); } }
private void OnClientReceive(IClient c, ClientReceiveArgs reader) { if (Status == RunStatus.Runing) { AsyncTcpClient client = (AsyncTcpClient)c; ClientToken token = (ClientToken)client.Token; long time = TimeWatch.GetElapsedMilliseconds() - token.RequestTime; this.CodeStatistics.Add(time); PipeStream stream = reader.Stream.ToPipeStream(); int length = (int)stream.Length; this.CodeStatistics.Receive(length); stream.ReadFree(length); if (Setting.Mode == "Response") { SendMessage(client); } } }
void EventClientReceive(IClient client, ClientReceiveArgs reader) { try { var pipeStream = reader.Stream.ToPipeStream(); if (!pipeStream.TryReadLine(out var msg) || msg == null) { return; } msg = msg.Trim('\0').Trim(); if (msg.IsBlank()) { return; } IInlineMessage message; if (msg[0] == '#') { message = new InlineMessage { ID = msg[1..],
private void OnReceive(IClient c, ClientReceiveArgs reader) { if (Command.NetworkReceive != null) { var result = Command.NetworkReceive(this, reader.Stream.ToPipeStream()); if (result != null) { Result = result; OnCompleted(ResultType.Object, null); } } else { ResultType resultType; string msg; PipeStream pipeStream = reader.Stream.ToPipeStream(); if (mFreeLength > 0) { pipeStream.ReadFree(mFreeLength); mFreeLength = 0; } if (Result.Status == ResultStatus.None) { if (pipeStream.TryReadLine(out string line)) { char type = line[0]; switch (type) { case '+': resultType = ResultType.Simple; msg = line.Substring(1, line.Length - 1); OnCompleted(resultType, msg); return; case '-': resultType = ResultType.Error; msg = line.Substring(1, line.Length - 1); OnCompleted(resultType, msg); return; case ':': Result.Data.Add(new ResultItem { Type = ResultType.Integers, Data = long.Parse(line.Substring(1, line.Length - 1)) }); Result.Status = ResultStatus.Completed; OnCompleted(ResultType.Integers, null); return; case '$': Result.ResultType = ResultType.Bulck; Result.ArrayCount = 1; Result.BodyLength = int.Parse(line.Substring(1, line.Length - 1)); Result.Status = ResultStatus.Loading; break; case '*': Result.ResultType = ResultType.Arrays; Result.ArrayCount = int.Parse(line.Substring(1, line.Length - 1)); Result.Status = ResultStatus.Loading; break; } } } if (Result.Status == ResultStatus.Loading) { if (Result.ResultType == ResultType.Arrays) { LoadArray(pipeStream); } else if (Result.ResultType == ResultType.Bulck) { LoadBulck(pipeStream); } } } }