package io.scalecube.services;
import static com.google.common.base.Preconditions.checkArgument;
import io.scalecube.cluster.Cluster;
import io.scalecube.transport.Address;
import io.scalecube.transport.Message;
import rx.Observable;
import java.util.concurrent.CompletableFuture;
public class ClusterServiceCommunicator implements ServiceCommunicator {
private Cluster cluster;
public ClusterServiceCommunicator(Cluster cluster) {
checkArgument(cluster != null, "cluster can't be null");
this.cluster = cluster;
}
@Override
public CompletableFuture<Void> send(Address address, Message message) {
CompletableFuture<Void> messageFuture = new CompletableFuture<>();
cluster.send(address, message, messageFuture);
return messageFuture;
}
@Override
public Address address() {
return cluster.address();
}
@Override
public Observable<Message> listen() {
return cluster.listen();
}
}