internal static bool TryParseHttpVersion(ByteSpan buffer, out Utf8String httpVersion, out int parsedBytes) { var versionSpan = buffer.SliceTo(HttpRequestReader.s_CR, HttpRequestReader.s_LF, out parsedBytes); httpVersion = new Utf8String(versionSpan); return(parsedBytes != 0); }
internal static bool TryParseRequestUri(ByteSpan buffer, out Utf8String requestUri, out int parsedBytes) { var uriSpan = buffer.SliceTo(HttpRequestReader.s_SP, out parsedBytes); requestUri = new Utf8String(uriSpan); return(parsedBytes != 0); }
internal Utf8String ReadHeader() { int parsedBytes; var header = Buffer.SliceTo(s_CR, s_LF, out parsedBytes); if (parsedBytes > Buffer.Length) { Buffer = Buffer.Slice(parsedBytes); } else { Buffer = new ByteSpan(); } return(new Utf8String(header)); }
internal static ByteSpan SliceTo(this ByteSpan buffer, char terminator, out int consumedBytes) { return(buffer.SliceTo((byte)terminator, out consumedBytes)); }
internal static ByteSpan SliceTo(this ByteSpan buffer, byte terminatorFirst, byte terminatorSecond, out int consumedBytes) { return(buffer.SliceTo(0, terminatorFirst, terminatorSecond, out consumedBytes)); }
internal static ByteSpan SliceTo(this ByteSpan buffer, int start, char terminatorFirst, char terminatorSecond, out int consumedBytes) { return(buffer.SliceTo(start, (byte)terminatorFirst, (byte)terminatorSecond, out consumedBytes)); }