ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergei Egorov <bsid...@gmail.com>
Subject Re: IgniteFuture adapters
Date Mon, 27 Mar 2017 13:14:22 GMT
True, I just prefer functional style over static methods.

Regarding "why should this method be a part of the future API" - why not?
It helps to chain such calls instead of call nesting.

Of course, if Java had extension methods it wouldn't be needed, but we
don't have them.

On Mon, Mar 27, 2017 at 4:06 PM Alexey Goncharuk <alexey.goncharuk@gmail.com>
wrote:

> Sergei,
>
> Why should this method be a part of the future API? The only implementation
> will do "return func(this);"
>
> I can achieve the same result the following way:
> rx(compute.runAsync(runnable)).timeout(5_000).subscribe();
>
>
>
> 2017-03-27 15:54 GMT+03:00 Sergei Egorov <bsideup@gmail.com>:
>
> > Take a look at my initial code.
> >
> > public <T> IgniteFuture<T> chain(IgniteClosure<? super
> > IgniteFuture<V>, T> doneCb);
> >
> > vs
> >
> > public <R> R to(IgniteClosure<? super IgniteFuture<V>, R> transformer);
> >
> >
> > The result of "chain" is IgniteFuture.
> >
> > The result of "to" is the object returned from transformer. It would
> > be CompletableFuture, Rx's Observable, Reactor's Mono, etc...
> >
> >
> > On Mon, Mar 27, 2017 at 3:18 PM Дмитрий Рябов <somefireone@gmail.com>
> > wrote:
> >
> > > Em... When you get result of your future, closure will produce new
> future
> > > with completely different type.
> > >
> > > 2017-03-27 13:43 GMT+03:00 Sergei Egorov <bsideup@gmail.com>:
> > >
> > > > It doesn't :)
> > > >
> > > > It returns another IgniteFuture where I want to transform it to
> > > completely
> > > > different type.
> > > >
> > > > On Mon, Mar 27, 2017 at 1:41 PM Дмитрий Рябов <somefireone@gmail.com
> >
> > > > wrote:
> > > >
> > > > > IgniteFuture have method
> > > > >
> > > > > public <T> IgniteFuture<T> chain(IgniteClosure<? super
> > IgniteFuture<V>,
> > > > T>
> > > > > doneCb);
> > > > >
> > > > > which do this.
> > > > >
> > > > > 2017-03-27 13:30 GMT+03:00 Sergei Egorov <bsideup@gmail.com>:
> > > > >
> > > > > > Hi!
> > > > > >
> > > > > > Would be nice if igniteFuture would provide a small but very
> usable
> > > > > method:
> > > > > >
> > > > > >     public <R> R to(Function<IgniteFuture<T>,
R> transformer)
> > > > > >
> > > > > > it will allow to chain it like:
> > > > > >
> > > > > >
>  compute.runAsync(runnable).to(rx()).timeout(5_000).subscribe()
> > > > > >
> > > > > > Where rx() is just a static function with something like:
> > > > > >
> > > > > >    public static <T> Function<IgniteFuture<T>,
Observable<T>>
> rx()
> > > > > >
> > > > > >
> > > > > > WDYT?
> > > > > >
> > > > >
> > > > >
> > > > > 2017-03-27 13:30 GMT+03:00 Sergei Egorov <bsideup@gmail.com>:
> > > > >
> > > > > > Hi!
> > > > > >
> > > > > > Would be nice if igniteFuture would provide a small but very
> usable
> > > > > method:
> > > > > >
> > > > > >     public <R> R to(Function<IgniteFuture<T>,
R> transformer)
> > > > > >
> > > > > > it will allow to chain it like:
> > > > > >
> > > > > >
>  compute.runAsync(runnable).to(rx()).timeout(5_000).subscribe()
> > > > > >
> > > > > > Where rx() is just a static function with something like:
> > > > > >
> > > > > >    public static <T> Function<IgniteFuture<T>,
Observable<T>>
> rx()
> > > > > >
> > > > > >
> > > > > > WDYT?
> > > > > >
> > > > >
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message