Beispiel #1
0
            public T Decode <T>()
            {
                if (_codec.Wrap)
                {
                    Multicodec.ConsumeHeader(_stream, _codec.Header);
                }

                var hdr = Multicodec.PeekHeader(_stream);

                if (hdr == null || hdr.Length == 0)
                {
                    throw new EndOfStreamException();
                }

                var subcodec = _codec._codecs.SingleOrDefault(c => c.Header.SequenceEqual(hdr));

                if (subcodec == null)
                {
                    throw new Exception($"no codec found for {Encoding.UTF8.GetString(hdr)}");
                }

                _codec.Last = subcodec;

                return(subcodec.Decoder(_stream).Decode <T>());
            }
Beispiel #2
0
            public async Task <T> DecodeAsync <T>(CancellationToken cancellationToken = default(CancellationToken))
            {
                if (_codec.Wrap)
                {
                    await Multicodec.ConsumeHeaderAsync(_stream, _codec.Header, cancellationToken);
                }

                var hdr = await Multicodec.PeekHeaderAsync(_stream, cancellationToken);

                if (hdr == null || hdr.Length == 0)
                {
                    throw new EndOfStreamException();
                }

                var subcodec = _codec._codecs.SingleOrDefault(c => c.Header.SequenceEqual(hdr));

                if (subcodec == null)
                {
                    throw new Exception($"no codec found for {Encoding.UTF8.GetString(hdr)}");
                }

                _codec.Last = subcodec;

                return(await subcodec.Decoder(_stream).DecodeAsync <T>(cancellationToken));
            }
Beispiel #3
0
            public T Decode <T>()
            {
                if (_codec._multicodec)
                {
                    Multicodec.ConsumeHeader(_stream, _codec.Header);
                }

                return(CBORObject.Read(_stream).ToObject <T>());
            }
Beispiel #4
0
            public async Task<T> DecodeAsync<T>(CancellationToken cancellationToken)
            {
                if (_codec._multicodec)
                    await Multicodec.ConsumeHeaderAsync(_stream, _codec.Header, cancellationToken);

                var bytes = await MessageIo.ReadMessageAsync(_stream, cancellationToken);

                return (T)(object)bytes;
            }
Beispiel #5
0
 private static void Paths(StreamWriter w, StreamReader r)
 {
     Decode(r, (codec, obj) =>
     {
         var p = Multicodec.HeaderPath(codec.Last.Header);
         w.WriteLine(Encoding.UTF8.GetString(p));
         return(true);
     });
 }
Beispiel #6
0
            public T Decode<T>()
            {
                if (_codec._multicodec)
                    Multicodec.ConsumeHeader(_stream, _codec.Header);

                var bytes = MessageIo.ReadMessage(_stream);

                return (T)(object)bytes;
            }
Beispiel #7
0
            public async Task <T> DecodeAsync <T>(CancellationToken cancellationToken = default(CancellationToken))
            {
                if (_codec._multicodec)
                {
                    await Multicodec.ConsumeHeaderAsync(_stream, _codec.Header, cancellationToken);
                }

                return(CBORObject.Read(_stream).ToObject <T>());
            }
Beispiel #8
0
            public T Decode <T>()
            {
                if (_codec._multicodec)
                {
                    Multicodec.ConsumeHeader(_stream, _codec.Header);
                }

                var cbor = CBORObject.Read(_stream);

                return(JsonConvert.DeserializeObject <T>(cbor.ToJSONString()));
            }
Beispiel #9
0
            public async Task <T> DecodeAsync <T>(CancellationToken cancellationToken)
            {
                if (_codec._multicodec)
                {
                    await Multicodec.ConsumeHeaderAsync(_stream, _codec.Header, cancellationToken);
                }

                var cbor = CBORObject.Read(_stream);

                return(JsonConvert.DeserializeObject <T>(cbor.ToJSONString()));
            }
Beispiel #10
0
        private static void P2H(StreamWriter w, StreamReader r)
        {
            while (true)
            {
                var p = r.ReadLine();
                if (string.IsNullOrEmpty(p))
                {
                    break;
                }

                var hdr = Multicodec.Header(Encoding.UTF8.GetBytes(p));
                w.Write(hdr);
            }
        }
Beispiel #11
0
        private static void H2P(StreamWriter w, StreamReader r)
        {
            while (true)
            {
                var hdr = Multicodec.ReadHeader(r.BaseStream);
                if (hdr == null || hdr.Length == 0)
                {
                    return;
                }

                var p = Encoding.UTF8.GetString(Multicodec.HeaderPath(hdr));
                w.WriteLine(p);
            }
        }
Beispiel #12
0
            public async Task <T> DecodeAsync <T>(CancellationToken cancellationToken = default(CancellationToken))
            {
                if (_codec._multicodec)
                {
                    await Multicodec.ConsumeHeaderAsync(_stream, _codec.Header, cancellationToken);
                }

                if (_codec._msgio)
                {
                    return(Deserialize <T>(await MessageIo.ReadMessageAsync(_stream, cancellationToken)));
                }

                return(ProtoBuf.Serializer.DeserializeWithLengthPrefix <T>(_stream, PrefixStyle.Fixed32BigEndian));
            }
Beispiel #13
0
            public T Decode <T>()
            {
                if (_codec._multicodec)
                {
                    Multicodec.ConsumeHeader(_stream, _codec.Header);
                }

                if (_codec._msgio)
                {
                    return(Deserialize <T>(MessageIo.ReadMessage(_stream)));
                }

                return(ProtoBuf.Serializer.DeserializeWithLengthPrefix <T>(_stream, PrefixStyle.Fixed32BigEndian));
            }
Beispiel #14
0
        private static void Filter(StreamWriter w, StreamReader r, string path)
        {
            throw new NotImplementedException();
            var hdr = Multicodec.Header(Encoding.UTF8.GetBytes(path));

            Decode(r, (codec, value) =>
            {
                if (!codec.Last.Header.SequenceEqual(hdr))
                {
                    return(true);
                }

                return(true);
            });
        }
Beispiel #15
0
            public async Task<T> DecodeAsync<T>(CancellationToken cancellationToken)
            {
                if (_codec._multicodec)
                    await Multicodec.ConsumeHeaderAsync(_stream, _codec.Header, cancellationToken);

                var json = string.Empty;
                if (_codec._msgio)
                {
                    var bytes = await MessageIo.ReadMessageAsync(_stream, cancellationToken);
                    json = Encoding.UTF8.GetString(bytes);
                }
                else
                {
                    json = await ReadLineAsync(_stream, cancellationToken);
                }

                return JsonConvert.DeserializeObject<T>(json);
            }
Beispiel #16
0
            public T Decode<T>()
            {
                if (_codec._multicodec)
                    Multicodec.ConsumeHeader(_stream, _codec.Header);

                var json = string.Empty;
                if (_codec._msgio)
                {
                    var bytes = MessageIo.ReadMessage(_stream);
                    json = Encoding.UTF8.GetString(bytes);
                }
                else
                {
                    json = ReadLine(_stream);
                }

                return JsonConvert.DeserializeObject<T>(json);

            }
Beispiel #17
0
        private static ICodec CodecWithPath(string path)
        {
            var hdr = Multicodec.Header(Encoding.UTF8.GetBytes(path));

            return(MuxCodec.CodecWithHeader(hdr, MuxCodec.Standard.Codecs));
        }
Beispiel #18
0
 private static void Header(StreamWriter w, string path)
 {
     w.Write(Multicodec.Header(Encoding.UTF8.GetBytes(path)));
 }