Example usage for com.google.common.base Service start

List of usage examples for com.google.common.base Service start

Introduction

In this page you can find the example usage for com.google.common.base Service start.

Prototype

Future<State> start();

Source Link

Document

If the service state is State#NEW , this initiates service startup and returns immediately.

Usage

From source file:io.datakernel.service.ServiceGraphModule.java

private Service getWorkersServiceOrNull(final Key<?> key, final List<?> instances) {
    final List<Service> services = new ArrayList<>();
    boolean found = false;
    for (Object instance : instances) {
        Service service = getServiceOrNull(key, instance);
        services.add(service);// w w w .  j  a v  a  2s  .c om
        if (service != null) {
            found = true;
        }
    }
    if (!found)
        return null;
    return new Service() {
        @Override
        public ListenableFuture<?> start() {
            List<ListenableFuture<?>> futures = new ArrayList<>();
            for (Service service : services) {
                futures.add(service != null ? service.start() : null);
            }
            return combineFutures(futures, directExecutor());
        }

        @Override
        public ListenableFuture<?> stop() {
            List<ListenableFuture<?>> futures = new ArrayList<>();
            for (Service service : services) {
                futures.add(service != null ? service.stop() : null);
            }
            return combineFutures(futures, directExecutor());
        }
    };
}

From source file:fathom.Services.java

public synchronized void start(Injector injector) {
    started = true;//from w w w .  ja v  a 2s.  c o  m

    getServiceClasses().forEach((serviceClass) -> {

        if (RequireUtil.allowClass(settings, serviceClass)) {
            Service service = injector.getInstance(serviceClass);
            instances.add(service);
        }

    });

    // sort the services into the preferred start order
    Collections.sort(instances, new Comparator<Service>() {
        @Override
        public int compare(Service o1, Service o2) {
            if (o2.getPreferredStartOrder() < 0) {
                return -1;
            } else if (o1.getPreferredStartOrder() < 0) {
                return 1;
            } else if (o1.getPreferredStartOrder() < o2.getPreferredStartOrder()) {
                return -1;
            } else if (o1.getPreferredStartOrder() > o2.getPreferredStartOrder()) {
                return 1;
            }
            return 0;
        }
    });

    for (Service service : instances) {
        log.debug("{} '{}'", Strings.padStart("" + service.getPreferredStartOrder(), 3, '0'),
                service.getClass().getName());
    }

    for (Service service : instances) {
        log.info("Starting service '{}'", service.getClass().getName());
        try {
            service.start();
        } catch (Exception e) {
            log.error("Failed to start '{}'", service.getClass().getName(), e);

            if (e instanceof FatalException) {
                stop();
                System.exit(1);
            }
        }
    }
}