Search in sources :

Example 1 with MetadataRequest

use of io.atomix.protocols.backup.protocol.MetadataRequest in project atomix by atomix.

the class PrimaryBackupClient method getPrimitives.

@Override
public CompletableFuture<Set<String>> getPrimitives(PrimitiveType primitiveType) {
    CompletableFuture<Set<String>> future = new CompletableFuture<>();
    MetadataRequest request = MetadataRequest.request(primitiveType.id());
    threadContext.execute(() -> {
        Member primary = primaryElection.getTerm().join().primary();
        if (primary == null) {
            future.completeExceptionally(new Unavailable());
            return;
        }
        protocol.metadata(primary.nodeId(), request).whenCompleteAsync((response, error) -> {
            if (error == null) {
                if (response.status() == Status.OK) {
                    future.complete(response.primitiveNames());
                } else {
                    future.completeExceptionally(new PrimitiveException.Unavailable());
                }
            } else {
                future.completeExceptionally(new PrimitiveException.Unavailable());
            }
        }, threadContext);
    });
    return future;
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) Set(java.util.Set) MetadataRequest(io.atomix.protocols.backup.protocol.MetadataRequest) Member(io.atomix.primitive.partition.Member) PrimitiveException(io.atomix.primitive.PrimitiveException) Unavailable(io.atomix.primitive.PrimitiveException.Unavailable) Unavailable(io.atomix.primitive.PrimitiveException.Unavailable)

Aggregations

PrimitiveException (io.atomix.primitive.PrimitiveException)1 Unavailable (io.atomix.primitive.PrimitiveException.Unavailable)1 Member (io.atomix.primitive.partition.Member)1 MetadataRequest (io.atomix.protocols.backup.protocol.MetadataRequest)1 Set (java.util.Set)1 CompletableFuture (java.util.concurrent.CompletableFuture)1