Example usage for io.vertx.core CompositeFuture all

List of usage examples for io.vertx.core CompositeFuture all

Introduction

In this page you can find the example usage for io.vertx.core CompositeFuture all.

Prototype

static <T1, T2> CompositeFuture all(Future<T1> f1, Future<T2> f2) 

Source Link

Document

Return a composite future, succeeded when all futures are succeeded, failed when any future is failed.

Usage

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);
}