@Override public void start(final Handler<AsyncResult<Void>> doneHandler) { listener.registerJoinHandler(joinHandler); listener.registerLeaveHandler(leaveHandler); final CountingCompletionHandler<Void> counter = new CountingCompletionHandler<>(2); counter.setHandler( new Handler<AsyncResult<Void>>() { @Override public void handle(final AsyncResult<Void> result) { if (result.failed()) { stop( new Handler<AsyncResult<Void>>() { @Override public void handle(AsyncResult<Void> stopResult) { doneHandler.handle(result); } }); } else { // A local handler is registered which allows components on the local node // to access the cluster quicker by preventing messages from going across // the network if possible. vertx.eventBus().registerHandler(local, messageHandler, counter); synchronized (registry) { registry.add(local); } doneHandler.handle(result); } } }); vertx.eventBus().registerHandler(internal, internalHandler, counter); vertx.eventBus().registerHandler(group, messageHandler, counter); }
protected void notifyListeners(int bestScore) { for (ClusterListener listener : clusterListeners) { listener.bestSolutionUpdated(bestScore); } }