Skip to content

Instantly share code, notes, and snippets.

@HeikoBornholdt
Created November 9, 2018 16:36
Show Gist options
  • Save HeikoBornholdt/ee5bb0cec12930b2bd4a01202a340d15 to your computer and use it in GitHub Desktop.
Save HeikoBornholdt/ee5bb0cec12930b2bd4a01202a340d15 to your computer and use it in GitHub Desktop.
public IIntermediateFuture<ThingDescription> discover() {
IntermediateFuture<ThingDescription> result = new IntermediateFuture<>();
// get all persistence services
AtomicInteger ai = new AtomicInteger();
ITerminableIntermediateFuture<PersistenceService> services = this.agent.getFeature(IRequiredServicesFeature.class).getServices(“PersistenceService");
services.addIntermediateResultListener(service -> {
ai.incrementAndGet();
// get all thing descriptions of this service
IIntermediateFuture<ThingDescription> thingDescriptions = service.getAllObjects(ThingDescription.class);
thingDescriptions.addIntermediateResultListener(thingDescription -> {
// add thing description to result
System.out.println("addIntermediateResult");
result.addIntermediateResult(thingDescription);
}, () -> {
if (ai.decrementAndGet() < 1) {
result.setFinished();
}
}, e -> {
if (ai.decrementAndGet() < 1) {
result.setFinished();
}
});
}, () -> {
// all thing descriptions of all services collected -> mark as finished
System.out.println("setFinished”);
result.setFinished();
});
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment