internal projectInvoke(StreamSpan <byte[]> span, string _stream, FSharpAsyncBuilder builder, IProjector projectorHandler)
 {
     this.span         = span;
     this._stream      = _stream;
     this.builder      = builder;
     _projectorHandler = projectorHandler;
 }
示例#2
0
 protected override Task <Stream> ValueToStreamAsync(Stream s)
 {
     using var fileStream  = FileInfo.OpenRead();
     using var streamSlice = new StreamSpan(fileStream, Offset, Length);
     streamSlice.CopyTo(s, _bufferLength);
     return(Task.FromResult(s));
 }
 private static void ProcessTodoStream(string streamId, StreamSpan <byte[]> streamData)
 {
     foreach (var streamEvent in streamData.events)
     {
         var processedEvent = Todo.Event.TryDecode(streamEvent.EventType, streamEvent.Data);
     }
 }
            public override FSharpAsync <Unit> Invoke(Tuple <string, StreamSpan <byte[]> > tupledArg)
            {
                string _stream           = tupledArg.Item1;
                StreamSpan <byte[]> span = tupledArg.Item2;
                FSharpAsyncBuilder  defaultAsyncBuilder = ExtraTopLevelOperators.DefaultAsyncBuilder;

                return(defaultAsyncBuilder.Delay(new projectInvoke(span, _stream, defaultAsyncBuilder, _projectorHandler)));
            }
示例#5
0
 public TagStream(ulong tagId, StreamSpan stream)
 {
     _stream        = stream.Required();
     _tagId         = tagId.AsILInt();
     _contentLength = ((ulong)_stream.Length).AsILInt();
     _length        = _tagId.Length + _contentLength.Length + _stream.Length;
     _position      = 0;
 }
        private void ProcessTodoStream(string streamId, StreamSpan <byte[]> streamData)
        {
            foreach (var streamEvent in streamData.events)
            {
                var processedEvent = Todo.Event.TryDecode(streamEvent.EventType, streamEvent.Data);

                Log.Debug("Processed Event: {Event}", processedEvent);
            }
        }
 protected sealed override T DeserializeInner(Stream s)
 {
     if ((_valueLength ??= s.ILIntDecode()) > int.MaxValue && KeepEncodedBytesInMemory)
     {
         throw new InvalidDataException("Tag content is TOO BIG to deserialize!");
     }
     using var ss = new StreamSpan(s, _valueLength.Value);
     return(ValueFromStream(ss));
 }
示例#8
0
        public static FSharpAsync <Unit> Test(StreamSpan <byte[]> stream)
        {
            Log.Debug("Got this:{0}", stream.ToString());

            foreach (var streamEvent in stream.events)
            {
                FsCodec.Codec.
            }



            return(FSharpAsync.Sleep(1));
        }
示例#9
0
        public Task Project(string _stream, StreamSpan <byte[]> span)
        {
            Log.Debug("Got this:{0}", span.ToString());
            var name = _stream.Split(new char['-'], 2, StringSplitOptions.RemoveEmptyEntries)[0];
            var id   = _stream.Split(new char['-'], 2, StringSplitOptions.RemoveEmptyEntries)[1];

            name switch
            {
                nameof(Todo) => ProcessTodoStream(id, span),

                _ => throw new NotImplementedException(),
            };

            return(Task.CompletedTask);

            throw new NotImplementedException();
        }
        public Task Project(string _stream, StreamSpan <byte[]> span)
        {
            Log.Debug("Got this:{0}", span.ToString());
            var name = _stream.Split('-', 2, StringSplitOptions.RemoveEmptyEntries)[0];
            var id   = _stream.Split('-', 2, StringSplitOptions.RemoveEmptyEntries)[1];

            switch (name)
            {
            case "Todos":
                ProcessTodoStream(id, span);
                break;

            default:
                throw new NotImplementedException();
            }

            return(Task.CompletedTask);
        }
        public static Task Test(string streamName, StreamSpan <byte[]> streamData)
        {
            Log.Debug("Got this:{0}", streamData.ToString());

            var name = streamName.Split(new char['-'], 2, StringSplitOptions.RemoveEmptyEntries)[0];
            var id   = streamName.Split(new char['-'], 2, StringSplitOptions.RemoveEmptyEntries)[1];

            switch (name)
            {
            case nameof(Todo):
                ProcessTodoStream(id, streamData);
                break;
            }



            return(Task.CompletedTask);
        }
示例#12
0
 protected override T ValueFromStream(StreamSpan s) => new T().FromStream(s);
 protected override byte[] ValueFromStream(StreamSpan s) => s.ReadAllBytesAsync().Result;
 protected override Task <Stream> ValueToStreamAsync(Stream s)
 {
     using var streamSlice = new StreamSpan(_mmvs, Offset, Length);
     streamSlice.CopyTo(s, _bufferLength);
     return(Task.FromResult(s));
 }
 protected override T ValueFromStream(StreamSpan s) => default;
示例#16
0
 private static void TestSkippingOn(Stream baseStream)
 {
     baseStream.Seek(10, SeekOrigin.Begin);
     Assert.AreEqual(10L, baseStream.Position);
     baseStream.WriteByte(30);
     baseStream.Seek(10, SeekOrigin.Begin);
     Assert.AreEqual(10L, baseStream.Position);
     using (var sp = new StreamSpan(baseStream, (ulong)baseStream.ReadByte())) {
         Assert.AreEqual(30L, sp.Length);
         Assert.AreEqual(0L, sp.Position);
         Assert.AreEqual(11L, baseStream.Position);
         Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
         _ = sp.ReadBytes(20);
         Assert.AreEqual(20L, sp.Position);
         Assert.AreEqual(31L, baseStream.Position);
         Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
         if (sp.CanSeek)
         {
             sp.Position = 30;
             Assert.AreEqual(41L, baseStream.Position);
             Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
             sp.Position = 5;
             Assert.AreEqual(16L, baseStream.Position);
             Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
             sp.Seek(30, SeekOrigin.Begin);
             Assert.AreEqual(41L, baseStream.Position);
             Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
             sp.Position = 5;
             Assert.AreEqual(16L, baseStream.Position);
             Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
             sp.Seek(0, SeekOrigin.End);
             Assert.AreEqual(41L, baseStream.Position);
             Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
             sp.Position = 5;
             Assert.AreEqual(16L, baseStream.Position);
             Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
             sp.Seek(25, SeekOrigin.Current);
             Assert.AreEqual(41L, baseStream.Position);
             Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
             sp.Position = 5;
             Assert.AreEqual(16L, baseStream.Position);
             Assert.AreEqual(baseStream.Position, sp.OriginalPosition);
             using (var ss = new StreamSpan(sp, 20)) {
                 Assert.AreEqual(0L, ss.Position);
                 Assert.AreEqual(5L, sp.Position);
                 Assert.AreEqual(baseStream.Position, ss.OriginalPosition);
                 Assert.AreEqual(16L, baseStream.Position);
                 ss.Seek(8, SeekOrigin.Current);
                 Assert.AreEqual(8L, ss.Position);
                 Assert.AreEqual(13L, sp.Position);
                 Assert.AreEqual(baseStream.Position, ss.OriginalPosition);
                 Assert.AreEqual(24L, baseStream.Position);
             }
         }
     }
     Assert.AreEqual(41L, baseStream.Position);
     using (var sp2 = new StreamSpan(baseStream, (ulong)(baseStream.Length - baseStream.Position))) {
         Assert.AreEqual(0L, sp2.Position);
         Assert.AreEqual(41L, baseStream.Position);
         Assert.AreEqual(baseStream.Position, sp2.OriginalPosition);
         _ = sp2.ReadBytes(20);
         Assert.AreEqual(20L, sp2.Position);
         Assert.AreEqual(61L, baseStream.Position);
         Assert.AreEqual(baseStream.Position, sp2.OriginalPosition);
     }
     Assert.AreEqual(baseStream.Length, baseStream.Position);
 }