From 1278255c37eb41ef8f68a24e0f837ab1c6cdd564 Mon Sep 17 00:00:00 2001 From: Nex Date: Wed, 23 Sep 2020 11:19:17 +0800 Subject: [PATCH] feat: add getRecentBlocks method --- .../org/bdware/bdledger/api/grpc/Client.java | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/bdware/bdledger/api/grpc/Client.java b/src/main/java/org/bdware/bdledger/api/grpc/Client.java index 15a6797..1e85d9b 100644 --- a/src/main/java/org/bdware/bdledger/api/grpc/Client.java +++ b/src/main/java/org/bdware/bdledger/api/grpc/Client.java @@ -104,7 +104,7 @@ public class Client { info("*** clientVersion"); try { - return nodeFutureStub.clientVersion (Empty.getDefaultInstance()); + return nodeFutureStub.clientVersion(Empty.getDefaultInstance()); } catch (StatusRuntimeException e) { warning("RPC failed: {0}", e.getStatus()); return null; @@ -449,6 +449,58 @@ public class Client { return reqBuilder.build(); } + /** + * 返回时间戳最新的若干区块 + * (非阻塞) + */ + public ListenableFuture getRecentBlocks(String ledger, int count, IncludeTransactions includeTransactions) { + + info( + "*** getRecentBlocks: ledger={0} count={1} includeTransactions={2}", + ledger, count, includeTransactions); + + try { + return queryFutureStub.getRecentBlocks(getRecentBlocksRequest(ledger, count, includeTransactions)); + } catch (StatusRuntimeException e) { + warning("RPC failed: {0}", e.getStatus()); + return null; + } + } + + /** + * 返回时间戳最新的若干区块 + * (阻塞) + */ + public GetBlocksResponse getRecentBlocksSync(String ledger, int count, IncludeTransactions includeTransactions) { + + info( + "*** getRecentBlocksSync: ledger={0} count={1} includeTransactions={2}", + ledger, count, includeTransactions); + + try { + return queryBlockingStub.getRecentBlocks(getRecentBlocksRequest(ledger, count, includeTransactions)); + } catch (StatusRuntimeException e) { + warning("RPC failed: {0}", e.getStatus()); + return null; + } + } + + private RecentBlocksRequest getRecentBlocksRequest(String ledger, int count, IncludeTransactions includeTransactions) { + + RecentBlocksRequest.Builder reqBuilder = + RecentBlocksRequest.newBuilder() + .setLedger(ledger) + .setCount(count); + if (includeTransactions == null) { + includeTransactions = IncludeTransactions.NONE; + } + reqBuilder.setIncludeTransactions(includeTransactions); + + return reqBuilder.build(); + } + /** * 返回哈希所指定的事务