Răsfoiți Sursa

Adding overloads without IClock to TimeInterval and Timestamp.

Bart De Smet 8 ani în urmă
părinte
comite
08558bc2f2

+ 2 - 2
AsyncRx.NET/Playground/Program.cs

@@ -67,9 +67,9 @@ namespace Playground
         {
             await
                 AsyncObservable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1))
-                    .Timestamp(TaskPoolAsyncScheduler.Default)
+                    .Timestamp()
                     .Delay(TimeSpan.FromMilliseconds(2500))
-                    .Timestamp(TaskPoolAsyncScheduler.Default)
+                    .Timestamp()
                     .Select(x => new TimeInterval<long>(x.Value.Value, x.Timestamp - x.Value.Timestamp).ToString())
                     .SubscribeAsync(Print<string>()); // TODO: Use ForEachAsync.
         }

+ 16 - 0
AsyncRx.NET/System.Reactive.Async.Linq/System/Reactive/Linq/Operators/TimeInterval.cs

@@ -8,6 +8,14 @@ namespace System.Reactive.Linq
 {
     partial class AsyncObservable
     {
+        public static IAsyncObservable<TimeInterval<TSource>> TimeInterval<TSource>(this IAsyncObservable<TSource> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Create<TimeInterval<TSource>>(observer => source.SubscribeSafeAsync(AsyncObserver.TimeInterval(observer)));
+        }
+
         public static IAsyncObservable<TimeInterval<TSource>> TimeInterval<TSource>(this IAsyncObservable<TSource> source, IClock clock)
         {
             if (source == null)
@@ -21,6 +29,14 @@ namespace System.Reactive.Linq
 
     partial class AsyncObserver
     {
+        public static IAsyncObserver<TSource> TimeInterval<TSource>(IAsyncObserver<TimeInterval<TSource>> observer)
+        {
+            if (observer == null)
+                throw new ArgumentNullException(nameof(observer));
+
+            return TimeInterval(observer, Clock.Default);
+        }
+
         public static IAsyncObserver<TSource> TimeInterval<TSource>(IAsyncObserver<TimeInterval<TSource>> observer, IClock clock)
         {
             if (observer == null)

+ 16 - 0
AsyncRx.NET/System.Reactive.Async.Linq/System/Reactive/Linq/Operators/Timestamp.cs

@@ -8,6 +8,14 @@ namespace System.Reactive.Linq
 {
     partial class AsyncObservable
     {
+        public static IAsyncObservable<Timestamped<TSource>> Timestamp<TSource>(this IAsyncObservable<TSource> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Create<Timestamped<TSource>>(observer => source.SubscribeSafeAsync(AsyncObserver.Timestamp(observer)));
+        }
+
         public static IAsyncObservable<Timestamped<TSource>> Timestamp<TSource>(this IAsyncObservable<TSource> source, IClock clock)
         {
             if (source == null)
@@ -21,6 +29,14 @@ namespace System.Reactive.Linq
 
     partial class AsyncObserver
     {
+        public static IAsyncObserver<TSource> Timestamp<TSource>(IAsyncObserver<Timestamped<TSource>> observer)
+        {
+            if (observer == null)
+                throw new ArgumentNullException(nameof(observer));
+
+            return Timestamp(observer, Clock.Default);
+        }
+
         public static IAsyncObserver<TSource> Timestamp<TSource>(IAsyncObserver<Timestamped<TSource>> observer, IClock clock)
         {
             if (observer == null)