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);
Exemple #3
0
 public DefaultDecoderFactory(IMetadataDecoder decoder) => _decoder = decoder;
Exemple #4
0
 public PooledFrameDecoderPolicy(IMetadataDecoder metaDecoder) => _metaDecoder = metaDecoder;
Exemple #5
0
 public PooledFrameDecoder(IMetadataDecoder decoder)
     : base(decoder, default)
 {
 }