Hi Christian, Johannes, I have to ask, why would you not use OSGi Promises for this? Representing Long running and/or asynchronous tasks is exactly what OSGi Promises were designed for. They're also much simpler than CompletableFuture (which is a horrible API to try to use), and tie in to the rest of the OSGi ecosystem (for example the current Asynchronous Services spec, the proposed Push Stream spec and the next Log Service updates)
There is already an RSA 1.2 update needed in the next OSGi specification release - I would be happy to work with you to define a remote services config type for asynchronous remote service support. That way this behaviour would also be portable between implementations. I think that having a standard here is important, because there are actually a lot of different RSA implementations in the wild, and if they all do things completely differently then it will be confusing to users and result in the feature not being used. It will also help to ensure that the different providers hosted by single projects (Aries RSA and ECF both have multiple options here) are self-consistent. Best Regards, Tim Ward OSGi IoT EG Chair Sent from my iPhone > On 22 Jul 2016, at 16:11, Christian Schneider <[email protected]> wrote: > > Yes.. I just looked into CompleteableFuture. This looks quite good already. > So hopefully we get some more feedback on how to proceed. > > Christian > > 2016-07-22 16:25 GMT+02:00 Johannes Utzig <[email protected]>: > >> Hi Christian, >> >> I have not stumbled upon this yet, but on first glance it looks very >> similar to what you can do with a CompletableFuture: >> >> testService.helloAsync().thenAccept(result -> System.out.println(result)); >> >> Looks like the main difference is that Observable allows multiple items >> that become available over time. >> >> But part of my change was a bit of a cleanup in the handling of the >> InvocationStrategy which should make it easier to add support for >> additional invocation strategies (like an Observable based). >> As for the initial implementation I would prefer to keep it free of >> additional mandatory dependencies. >> >> Johannes >> >> 2016-07-22 15:38 GMT+02:00 Christian Schneider <[email protected]>: >> >>> Hi Johannes, >>> >>> welcome to the Aries community and thanks for the pull requests and >> issues >>> you already provided. >>> >>> Long running calls could make a lot of sense but I am not sure if Future >>> is still the way to go. >>> It seems people are using Observable now ( >>> http://reactivex.io/documentation/observable.html) to be able to use >>> rxjava (https://github.com/ReactiveX/RxJava). >>> >>> So I think it might make sense to directly provide this. I am not >>> experienced in rxjava but maybe we got some people here who know that >>> better. >>> >>> Christian >>> >>> >>>> On 22.07.2016 15:00, Johannes Utzig wrote: >>>> >>>> Hi, >>>> >>>> as a quick introduction, my name is Johannes Utzig and I work for the >>>> SEEBURGER AG. >>>> We have been involved with aries-rsa since the beginning and maintain a >>>> fork of it on github. We are primarily interested in the fastbin >> transport >>>> and I usually try to create pull requests for enhancements/fixes we're >>>> doing that might be useful to have upstream. >>>> >>>> I am currently working on adding support for long running remote calls >>>> (several minutes/hours) to fastbin. >>>> If possible, I would like to contribute that feature upstream if there >> is >>>> an interest for it. >>>> The idea is to allow Future and CompletableFuture as return values of >>>> remote methods. >>>> If such a return value is detected, the invocation strategy switches to >>>> async and the client receives an implementation of (Completable)Future >>>> that >>>> will be filled as soon as the call result becomes available. >>>> >>>> Example Provider: >>>> >>>> public CompletableFuture<String> helloAsync() { >>>> return CompletableFuture.supplyAsync(() -> "Hello"); >>>> } >>>> >>>> Example Consumer: >>>> >>>> exampleService.helloAsync().get(5, TimeUnit.MINUTES)); >>>> >>>> A few questions about that: >>>> >>>> -Does someone maybe have a better idea on how to support long >>>> running/async >>>> calls? >>>> >>>> -would you be interested in that contribution? >>>> >>>> -My implementation requires java 8 features like CompletableFuture but >> rsa >>>> is currently building with 1.7. Would it be OK to move to java 8 as a >>>> target version? >>>> >>>> Best regards, >>>> Johannes >>> >>> -- >>> Christian Schneider >>> http://www.liquid-reality.de >>> >>> Open Source Architect >>> http://www.talend.com > > > > -- > -- > Christian Schneider > http://www.liquid-reality.de > <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e46&URL=http%3a%2f%2fwww.liquid-reality.de> > > Open Source Architect > http://www.talend.com > <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e46&URL=http%3a%2f%2fwww.talend.com>
