8 org::xrpl::rpc::v1::GetLedgerDiffRequest
const& request = context.
params;
9 org::xrpl::rpc::v1::GetLedgerDiffResponse response;
10 grpc::Status
const status = grpc::Status::OK;
17 grpc::Status
const errorStatus{grpc::StatusCode::NOT_FOUND,
"base ledger not found"};
18 return {response, errorStatus};
23 grpc::Status
const errorStatus{grpc::StatusCode::NOT_FOUND,
"desired ledger not found"};
24 return {response, errorStatus};
31 grpc::Status
const errorStatus{grpc::StatusCode::NOT_FOUND,
"base ledger not validated"};
32 return {response, errorStatus};
39 grpc::Status
const errorStatus{grpc::StatusCode::NOT_FOUND,
"base ledger not validated"};
40 return {response, errorStatus};
48 baseLedger->stateMap().compare(desiredLedger->stateMap(), differences, maxDifferences);
51 grpc::Status
const errorStatus{
52 grpc::StatusCode::RESOURCE_EXHAUSTED,
"too many differences between specified ledgers"};
53 return {response, errorStatus};
56 for (
auto& [k, v] : differences)
58 auto diff = response.mutable_ledger_objects()->add_objects();
59 auto inBase = v.first;
60 auto inDesired = v.second;
65 diff->set_key(k.data(), k.size());
69 XRPL_ASSERT(inDesired->size() > 0,
"xrpl::doLedgerDiffGrpc : non-empty desired");
70 diff->set_key(k.data(), k.size());
71 if (request.include_blobs())
73 diff->set_data(inDesired->data(), inDesired->size());
77 return {response, status};