List of usage examples for io.vertx.core CompositeFuture all
static <T1, T2> CompositeFuture all(Future<T1> f1, Future<T2> f2)
From source file:com.github.ithildir.airbot.util.AirQualityMessageBuilder.java
License:Open Source License
public Future<String> getMessage(Location location, String locationString, Locale locale) { Future<String> future = Future.future(); MeasurementService measurementService = _getMeasurementService(location); Future<Measurement> measurementFuture = Future.future(); Future<String> nameFuture = Future.future(); measurementService.getMeasurement(location.getLatitude(), location.getLongitude(), measurementFuture); measurementService.getName(nameFuture); CompositeFuture compositeFuture = CompositeFuture.all(measurementFuture, nameFuture); compositeFuture.setHandler(asyncResult -> { if (asyncResult.failed()) { future.fail(asyncResult.cause()); return; }/*w w w . jav a2 s. c o m*/ CompositeFuture resultCompositeFuture = asyncResult.result(); Measurement measurement = (Measurement) resultCompositeFuture.resultAt(0); String name = (String) resultCompositeFuture.resultAt(1); String message = _getMessage(measurement, name, locationString, locale); future.complete(message); }); return future; }
From source file:examples.CoreExamples.java
License:Open Source License
public void exampleFutureAll1(HttpServer httpServer, NetServer netServer) { Future<HttpServer> httpServerFuture = Future.future(); httpServer.listen(httpServerFuture.completer()); Future<NetServer> netServerFuture = Future.future(); netServer.listen(netServerFuture.completer()); CompositeFuture.all(httpServerFuture, netServerFuture).setHandler(ar -> { if (ar.succeeded()) { // All servers started } else {//from w w w .ja v a 2 s . com // At least one server failed } }); }
From source file:io.apiman.gateway.engine.vertx.shareddata.SharedGlobalDataRegistry.java
License:Apache License
@Override public void unregisterClient(Client client, IAsyncResultHandler<Void> resultHandler) { String clientIndex = getClientIndex(client); objectMap.get(clientIndex, handleSuccessfulResult(resultHandler, oldClientRaw -> { Client oldClient = (Client) oldClientRaw; if (oldClient == null) { Exception ex = new RegistrationException(Messages.i18n.format("InMemoryRegistry.ClientNotFound")); resultHandler.handle(AsyncResultImpl.create(ex)); } else {/*from w w w. j av a2 s . c o m*/ Future<Object> future1 = Future.future(); Future<Object> future2 = Future.future(); objectMap.remove(clientIndex, future1.completer()); objectMap.remove(oldClient.getApiKey(), future2.completer()); CompositeFuture.all(future1, future2).setHandler(handleCompositeResult(resultHandler)); } })); }
From source file:io.apiman.gateway.engine.vertx.shareddata.SharedGlobalDataRegistry.java
License:Apache License
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override/* w w w. ja v a 2 s.co m*/ public void getContract(String apiOrganizationId, String apiId, String apiVersion, String apiKey, IAsyncResultHandler<ApiContract> handler) { String apiIndex = getApiIndex(apiOrganizationId, apiId, apiVersion); Future apiFuture = Future.future(); Future clientFuture = Future.future(); objectMap.get(apiIndex, apiFuture.completer()); objectMap.get(apiKey, clientFuture.completer()); CompositeFuture.all(apiFuture, clientFuture).setHandler(compositeResult -> { if (compositeResult.succeeded()) { Api api = (Api) apiFuture.result(); Client client = (Client) clientFuture.result(); if (api == null) { Exception error = new InvalidContractException( Messages.i18n.format("InMemoryRegistry.NoClientForAPIKey", apiKey)); handler.handle(AsyncResultImpl.create(error, ApiContract.class)); } else if (client == null) { Exception error = new InvalidContractException( Messages.i18n.format("InMemoryRegistry.ApiWasRetired", apiId, apiOrganizationId)); handler.handle(AsyncResultImpl.create(error, ApiContract.class)); } else { Optional<Contract> matchedOpt = client.getContracts().stream() .filter(contract -> contract.matches(apiOrganizationId, apiId, apiVersion)).findFirst(); if (matchedOpt.isPresent()) { Contract contract = matchedOpt.get(); ApiContract apiContract = new ApiContract(api, client, contract.getPlan(), contract.getPolicies()); handler.handle(AsyncResultImpl.create(apiContract)); } else { Exception error = new InvalidContractException( Messages.i18n.format("InMemoryRegistry.NoContractFound", //$NON-NLS-1$ client.getClientId(), api.getApiId())); handler.handle(AsyncResultImpl.create(error, ApiContract.class)); } } } else { handler.handle(AsyncResultImpl.create(compositeResult.cause())); } }); }
From source file:org.eclipse.hono.adapter.http.AbstractVertxBasedHttpProtocolAdapter.java
License:Open Source License
@Override public final void doStart(final Future<Void> startFuture) { checkPortConfiguration().compose(s -> preStartup()).compose(s -> { Router router = createRouter();//from ww w. j a v a 2 s . c o m if (router == null) { return Future.failedFuture("no router configured"); } else { addRoutes(router); return CompositeFuture.all(bindSecureHttpServer(router), bindInsecureHttpServer(router)); } }).compose(s -> { connectToMessaging(null); connectToDeviceRegistration(null); connectToCredentialsService(null); try { onStartupSuccess(); startFuture.complete(); } catch (Exception e) { LOG.error("error in onStartupSuccess", e); startFuture.fail(e); } }, startFuture); }
From source file:org.eclipse.hono.adapter.http.AbstractVertxBasedHttpProtocolAdapter.java
License:Open Source License
@Override public final void doStop(final Future<Void> stopFuture) { try {/* w w w .j a va 2 s. c o m*/ preShutdown(); } catch (Exception e) { LOG.error("error in preShutdown", e); } Future<Void> shutdownTracker = Future.future(); shutdownTracker.setHandler(done -> { if (done.succeeded()) { LOG.info("HTTP adapter has been shut down successfully"); stopFuture.complete(); } else { LOG.info("error while shutting down adapter", done.cause()); stopFuture.fail(done.cause()); } }); Future<Void> serverStopTracker = Future.future(); if (server != null) { server.close(serverStopTracker.completer()); } else { serverStopTracker.complete(); } Future<Void> insecureServerStopTracker = Future.future(); if (insecureServer != null) { insecureServer.close(insecureServerStopTracker.completer()); } else { insecureServerStopTracker.complete(); } CompositeFuture.all(serverStopTracker, insecureServerStopTracker).compose(v -> { Future<Void> honoClientStopTracker = Future.future(); closeClients(honoClientStopTracker.completer()); return honoClientStopTracker; }).compose(v -> postShutdown()).compose(s -> shutdownTracker.complete(), shutdownTracker); }
From source file:org.eclipse.hono.adapter.http.AbstractVertxBasedHttpProtocolAdapter.java
License:Open Source License
private void doUploadMessage(final RoutingContext ctx, final String tenant, final String deviceId, final Buffer payload, final String contentType, final Future<MessageSender> senderTracker, final String endpointName) { if (contentType == null) { badRequest(ctx.response(), String.format("%s header is missing", HttpHeaders.CONTENT_TYPE)); metrics.incrementUndeliverableHttpMessages(endpointName, tenant); } else if (payload == null || payload.length() == 0) { badRequest(ctx.response(), "missing body"); metrics.incrementUndeliverableHttpMessages(endpointName, tenant); } else {//from w w w. j a v a 2 s . c o m final Future<String> tokenTracker = getRegistrationAssertionHeader(ctx, tenant, deviceId); CompositeFuture.all(tokenTracker, senderTracker).setHandler(s -> { if (s.failed()) { if (tokenTracker.failed()) { LOG.debug("could not get registration assertion [tenant: {}, device: {}]", tenant, deviceId, s.cause()); endWithStatus(ctx.response(), HTTP_FORBIDDEN, null, null, null); } else { serviceUnavailable(ctx.response(), 5); } metrics.incrementUndeliverableHttpMessages(endpointName, tenant); } else { sendToHono(ctx.response(), deviceId, payload, contentType, tokenTracker.result(), senderTracker.result(), tenant, endpointName); } }); } }
From source file:org.eclipse.hono.adapter.mqtt.AbstractVertxBasedMqttProtocolAdapter.java
License:Open Source License
@Override public void doStart(final Future<Void> startFuture) { LOG.info("limiting size of inbound message payload to {} bytes", getConfig().getMaxPayloadSize()); if (!getConfig().isAuthenticationRequired()) { LOG.warn("authentication of devices turned off"); }//from w w w .jav a 2 s . c o m checkPortConfiguration().compose(ok -> { if (metrics == null) { // use default implementation // which simply discards all reported metrics metrics = new MqttAdapterMetrics(); } return CompositeFuture.all(bindSecureMqttServer(), bindInsecureMqttServer()); }).compose(t -> { if (usernamePasswordAuthProvider == null) { usernamePasswordAuthProvider = new UsernamePasswordAuthProvider(getCredentialsServiceClient(), getConfig()); } startFuture.complete(); }, startFuture); }
From source file:org.eclipse.hono.adapter.mqtt.AbstractVertxBasedMqttProtocolAdapter.java
License:Open Source License
@Override public void doStop(final Future<Void> stopFuture) { final Future<Void> serverTracker = Future.future(); if (this.server != null) { this.server.close(serverTracker.completer()); } else {//from www. ja va 2s . c om serverTracker.complete(); } final Future<Void> insecureServerTracker = Future.future(); if (this.insecureServer != null) { this.insecureServer.close(insecureServerTracker.completer()); } else { insecureServerTracker.complete(); } CompositeFuture.all(serverTracker, insecureServerTracker).compose(d -> stopFuture.complete(), stopFuture); }
From source file:org.eclipse.hono.adapter.mqtt.VertxBasedMqttProtocolAdapter.java
License:Open Source License
@Override public void doStop(final Future<Void> stopFuture) { Future<Void> shutdownTracker = Future.future(); shutdownTracker.setHandler(done -> { if (done.succeeded()) { LOG.info("MQTT adapter has been shut down successfully"); stopFuture.complete();// ww w . j ava 2s . c o m } else { LOG.info("error while shutting down MQTT adapter", done.cause()); stopFuture.fail(done.cause()); } }); Future<Void> serverTracker = Future.future(); if (this.server != null) { this.server.close(serverTracker.completer()); } else { serverTracker.complete(); } Future<Void> insecureServerTracker = Future.future(); if (this.insecureServer != null) { this.insecureServer.close(insecureServerTracker.completer()); } else { insecureServerTracker.complete(); } CompositeFuture.all(serverTracker, insecureServerTracker).compose(d -> { closeClients(shutdownTracker.completer()); }, shutdownTracker); }