public static IEnumerable <Frame> GetFramesOf(this IMetadataDecoder decoder, SequenceHolder holder, CancellationToken token = default) { if (token == default) { token = CancellationToken.None; } while (!token.IsCancellationRequested) { var buffer = holder.Buffer; var reader = new SequenceReader <byte>(buffer); if (!decoder.TryParse(ref reader, out var metadata)) { break; } if (metadata.Length < 0) { throw new ArgumentOutOfRangeException( nameof(metadata.Length), string.Format(_error, metadata)); } if (reader.Remaining < metadata.Length) { break; } var payload = buffer.Slice(reader.Position, metadata.Length); yield return(new Frame(payload, metadata)); holder.Buffer = buffer.Slice(payload.End); } }
public static IFrameDecoder AsFrameDecoder(this IMetadataDecoder decoder, PipeReader reader) => new PipeFrameDecoder(decoder, reader);
public DefaultDecoderFactory(IMetadataDecoder decoder) => _decoder = decoder;
public PooledFrameDecoderPolicy(IMetadataDecoder metaDecoder) => _metaDecoder = metaDecoder;
public PooledFrameDecoder(IMetadataDecoder decoder) : base(decoder, default) { }