Update TransactionLedgerClient

This commit is contained in:
Nex 2018-09-12 00:10:49 +08:00
parent 81bb3b2618
commit 86bf122733

View File

@ -0,0 +1,89 @@
package bdchain.api;
import bdchain.api.grpc.*;
import bdchain.api.grpc.TransactionLedgerGrpc.TransactionLedgerBlockingStub;
import com.google.protobuf.Empty;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import io.grpc.StatusRuntimeException;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
// import bdchain.api.grpc.TransactionLedgerGrpc.TransactionLedgerStub;
public class TransactionLedgerClient {
private static final Logger logger = Logger.getLogger(TransactionLedgerClient.class.getName());
private final ManagedChannel channel;
private final TransactionLedgerBlockingStub blockingStub;
// private final TransactionLedgerStub asyncStub;
/** Construct client for accessing TransactionLedger server at {@code host:port}. */
public TransactionLedgerClient(String host, int port) {
this(ManagedChannelBuilder.forAddress(host, port).usePlaintext());
}
/** Construct client for accessing TransactionLedger server using the existing channel. */
public TransactionLedgerClient(ManagedChannelBuilder<?> channelBuilder) {
channel = channelBuilder.build();
blockingStub = TransactionLedgerGrpc.newBlockingStub(channel);
// asyncStub = TransactionLedgerGrpc.newStub(channel);
}
public void shutdown() throws InterruptedException {
channel.shutdown().awaitTermination(5, TimeUnit.SECONDS);
}
public CreateLedgerResponse createLedger(String name) {
info("*** createLedger: name={0}", name);
CreateLedgerRequest request = CreateLedgerRequest.newBuilder().setName(name).build();
try {
return blockingStub.createLedger(request);
} catch (StatusRuntimeException e) {
warning("RPC failed: {0}", e.getStatus());
return null;
}
}
public GetLedgersResponse getLedgers() {
info("*** getLedgers");
try {
return blockingStub.getLedgers(Empty.getDefaultInstance());
} catch (StatusRuntimeException e) {
warning("RPC failed: {0}", e.getStatus());
return null;
}
}
public SendTransactionResponse sendTransaction(
String ledger, SendTransactionRequest.Transaction transaction) {
info("*** sendTransaction: ledger={0} transaction={1}", ledger, transaction);
SendTransactionRequest request =
SendTransactionRequest.newBuilder().setLedger(ledger).setTransaction(transaction).build();
try {
return blockingStub.sendTransaction(request);
} catch (StatusRuntimeException e) {
warning("RPC failed: {0}", e.getStatus());
return null;
}
}
private void info(String msg, Object... params) {
logger.log(Level.INFO, msg, params);
}
private void warning(String msg, Object... params) {
logger.log(Level.WARNING, msg, params);
}
}