All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.englishtown.vertx.zookeeper.promises.impl.DefaultWhenZooKeeperClient Maven / Gradle / Ivy

The newest version!
package com.englishtown.vertx.zookeeper.promises.impl;

import com.englishtown.promises.Deferred;
import com.englishtown.promises.Promise;
import com.englishtown.promises.When;
import com.englishtown.vertx.zookeeper.ZooKeeperClient;
import com.englishtown.vertx.zookeeper.ZooKeeperOperation;
import com.englishtown.vertx.zookeeper.promises.WhenZooKeeperClient;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.api.CuratorEvent;

import javax.inject.Inject;

/**
 * Default implementation of {@link com.englishtown.vertx.zookeeper.promises.WhenZooKeeperClient}
 */
public class DefaultWhenZooKeeperClient implements WhenZooKeeperClient {

    private final ZooKeeperClient client;
    private final When when;

    @Inject
    public DefaultWhenZooKeeperClient(ZooKeeperClient client, When when) {
        this.client = client;
        this.when = when;
    }

    @Override
    public CuratorFramework getCuratorFramework() {
        return client.getCuratorFramework();
    }

    @Override
    public Promise execute(ZooKeeperOperation operation) {
        Deferred d = when.defer();

        client.execute(operation, result -> {
            if (result.succeeded()) {
                d.resolve(result.result());
            } else {
                d.reject(result.cause());
            }
        });

        return d.getPromise();
    }

    @Override
    public WhenZooKeeperClient usingNamespace(String namespace) {
        return new DefaultWhenZooKeeperClient(client.usingNamespace(namespace), when);
    }

    @Override
    public boolean initialized() {
        return client.initialized();
    }

    @Override
    public Promise onReady() {
        Deferred d = when.defer();

        client.onReady(result -> {
            if (result.succeeded()) {
                d.resolve((Void) null);
            } else {
                d.reject(result.cause());
            }
        });

        return d.getPromise();
    }

    @Override
    public void close() {
        client.close();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy