Esempio n. 1
0
 public Future <Return> query(Params parameters)
 {
     return(Future <Return> .async((p, f) => {
         theFuture.onComplete(_ => doQuery(parameters, p));
         theFuture = f;
     }));
 }
Esempio n. 2
0
        public static IRxVal <Option <A> > toRxVal <A>(this Future <A> future)
        {
            var rx = RxRef.a(F.none <A>());

            future.onComplete(a => rx.value = F.some(a));
            return(rx);
        }
Esempio n. 3
0
        public Future <C> zip <B, C>(Future <B> fb, Fn <A, B, C> mapper)
        {
            if (implementation.isB || fb.implementation.isB)
            {
                return(Future <C> .unfulfilled);
            }
            if (implementation.isA && fb.implementation.isA)
            {
                return(Future.successful(mapper(implementation.__unsafeGetA, fb.implementation.__unsafeGetA)));
            }

            var fa = this;

            return(Future <C> .async(p => {
                void tryComplete()
                {
                    foreach (var ab in fa.value.zip(fb.value, mapper))
                    {
                        p.tryComplete(ab);
                    }
                }

                fa.onComplete(a => tryComplete());
                fb.onComplete(b => tryComplete());
            }));
        }
Esempio n. 4
0
 public static void onFailure <A, B>(this Future <Either <A, B> > future, Act <A> action) =>
 future.onComplete(e => {
     foreach (var a in e.leftValue)
     {
         action(a);
     }
 });
Esempio n. 5
0
 public static void onFailure <A>(this Future <Try <A> > future, Act <Exception> action) =>
 future.onComplete(e => {
     foreach (var ex in e.exception)
     {
         action(ex);
     }
 });
Esempio n. 6
0
 public static void onSuccess <A, B>(this Future <Either <A, B> > future, Act <B> action) =>
 future.onComplete(e => {
     foreach (var b in e.rightValue)
     {
         action(b);
     }
 });
Esempio n. 7
0
 public static void onSuccess <A>(this Future <Try <A> > future, Act <A> action) =>
 future.onComplete(e => {
     foreach (var a in e.value)
     {
         action(a);
     }
 });
Esempio n. 8
0
        public static IRxVal <B> toRxVal <A, B>(this Future <A> future, B whileNotCompleted, Fn <A, B> onCompletion)
        {
            var rx = RxRef.a(whileNotCompleted);

            future.onComplete(a => rx.value = onCompletion(a));
            return(rx);
        }
Esempio n. 9
0
        public static IRxVal <A> toRxVal <A>(this Future <A> future, A whileNotCompleted)
        {
            var rx = RxRef.a(whileNotCompleted);

            future.onComplete(a => rx.value = a);
            return(rx);
        }
Esempio n. 10
0
        public static IRxVal <A> toRxVal <A>(
            this Future <IRxVal <A> > future, A whileNotCompleted
            )
        {
            var rx = RxRef.a(whileNotCompleted);

            future.onComplete(rx2 => rx2.subscribe(v => rx.value = v));
            return(rx);
        }
Esempio n. 11
0
        public static ISubscription onCompleteCancellable <A>(this Future <A> future, Act <A> action)
        {
            var sub = new Subscription(() => { });

            future.onComplete(val => { if (sub.isSubscribed)
                                       {
                                           action(val);
                                       }
                              });
            return(sub);
        }
Esempio n. 12
0
 /// <summary>
 /// Complete the future with the right side, never complete if left side occurs.
 /// </summary>
 public static Future <B> dropError <A, B>(
     this Future <Either <A, B> > future, bool logOnError = false
     ) =>
 Future.a <B>(p => future.onComplete(either => either.voidFold(
                                         err => { if (logOnError)
                                                  {
                                                      Log.d.error(err.ToString());
                                                  }
                                         },
                                         p.complete
                                         )));
Esempio n. 13
0
 public static IRxVal <A> toRxVal <A>(
     this Future <IRxVal <A> > future, A whileNotCompleted
     ) => new RxVal <A>(
     whileNotCompleted,
     setValue => {
     var sub = Subscription.empty;
     future.onComplete(rx2 => {
         sub = rx2.subscribe(NoOpDisposableTracker.instance, a => setValue(a));
     });
     return(new Subscription(() => sub.unsubscribe()));
 }
     );
Esempio n. 14
0
 public static void onComplete <A, B>(
     this Future <Either <A, B> > future,
     Act <A> onError, Act <B> onSuccess
     ) =>
 future.onComplete(e => {
     if (e.isLeft)
     {
         onError(e.__unsafeGetLeft);
     }
     else
     {
         onSuccess(e.__unsafeGetRight);
     }
 });
Esempio n. 15
0
 public static void onFailure <A, B>(this Future <Either <A, B> > future, Act <A> action)
 {
     future.onComplete(e => e.leftValue.each(action));
 }
Esempio n. 16
0
 public static void onSuccess <A, B>(this Future <Either <A, B> > future, Act <B> action)
 {
     future.onComplete(e => e.rightValue.each(action));
 }