public bool BeginEncode(HeadersEnumerator enumerator, Span <byte> buffer, out int length) { _enumerator = enumerator; _enumerator.MoveNext(); return(Encode(buffer, out length)); }
public bool BeginEncode(int statusCode, HeadersEnumerator enumerator, Span <byte> buffer, out int length) { _enumerator = enumerator; _enumerator.MoveNext(); int statusCodeLength = EncodeStatusCode(statusCode, buffer); bool done = Encode(buffer.Slice(statusCodeLength), throwIfNoneEncoded: false, out int headersLength); length = statusCodeLength + headersLength; return(done); }
private bool Encode(Span <byte> buffer, bool throwIfNoneEncoded, out int length) { int currentLength = 0; do { if (!EncodeHeader(_enumerator.Current.Key, _enumerator.Current.Value, buffer.Slice(currentLength), out int headerLength)) { if (currentLength == 0 && throwIfNoneEncoded) { throw new HPackEncodingException(SR.net_http_hpack_encode_failure); } length = currentLength; return(false); } currentLength += headerLength; }while (_enumerator.MoveNext()); length = currentLength; return(true); }