예제 #1
0
 static void ObservableTest()
 {
     using (var pfac = new PipeFactory())
     {
         var r1 = pfac.CreateFromEnumerable(Enumerable.Range(0, 10000));
         pfac.CreateObservable(r1)
         .Subscribe(mem => {
             Console.WriteLine($"mem={mem}");
         },
                    e => {
             Console.WriteLine($"onerror:{e}");
         },
                    () => {
             Console.WriteLine($"oncompleted");
         });
     }
 }
예제 #2
0
 static void MemoryPipeTest()
 {
     using (var pfac = new PipeFactory())
     {
         // pipeline endpoint
         // if you want only to output Stream, call AsPipelineWriter(this Stream) extension method or CopyToAsync(Stream)
         var epwriter = pfac.CreateWriter(null, async(r, w) =>
         {
             while (true)
             {
                 try
                 {
                     var result = await r.ReadAsync();
                     if (result.IsCancelled || (result.IsCompleted && result.Buffer.IsEmpty))
                     {
                         break;
                     }
                     foreach (var rbuf in result.Buffer)
                     {
                         for (int i = 0; i < rbuf.Length; i++)
                         {
                             Console.Write($"{rbuf.Span[i].ToString("x2")}");
                             if ((i & 0xf) == 0xf)
                             {
                                 Console.WriteLine();
                             }
                             else
                             {
                                 Console.Write(":");
                             }
                         }
                     }
                     r.Advance(result.Buffer.End);
                 }
                 catch (Exception e)
                 {
                     Console.WriteLine($"{e}");
                 }
             }
         });
         var writer = pfac.Filter0xf0(epwriter);
         var reader = pfac.CreateFromEnumerable(Enumerable.Range(0, 10000));
         reader.CopyToAsync(writer).Wait();
     }
 }