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();
+ }
+
/**
* 返回哈希所指定的事务