20 #include <ripple/app/ledger/OpenLedger.h>
21 #include <ripple/app/main/Application.h>
22 #include <ripple/app/misc/TxQ.h>
23 #include <ripple/basics/mulDiv.h>
24 #include <ripple/protocol/ErrorCodes.h>
25 #include <ripple/protocol/Feature.h>
26 #include <ripple/rpc/Context.h>
27 #include <ripple/rpc/GRPCHandlers.h>
44 org::xrpl::rpc::v1::GetFeeResponse reply;
45 grpc::Status status = grpc::Status::OK;
52 return {reply, status};
58 reply.set_current_ledger_size(metrics.txInLedger);
59 reply.set_current_queue_size(metrics.txCount);
60 reply.set_expected_ledger_size(metrics.txPerLedger);
61 reply.set_ledger_current_index(view->info().seq);
62 reply.set_max_queue_size(*metrics.txQMaxSize);
65 org::xrpl::rpc::v1::FeeLevels& levels = *reply.mutable_levels();
66 levels.set_median_level(metrics.medFeeLevel.fee());
67 levels.set_minimum_level(metrics.minProcessingFeeLevel.fee());
68 levels.set_open_ledger_level(metrics.openLedgerFeeLevel.fee());
69 levels.set_reference_level(metrics.referenceFeeLevel.fee());
72 org::xrpl::rpc::v1::Fee& fee = *reply.mutable_fee();
73 auto const baseFee = view->fees().base;
74 fee.mutable_base_fee()->set_drops(
76 fee.mutable_minimum_fee()->set_drops(
77 toDrops(metrics.minProcessingFeeLevel, baseFee).
drops());
78 fee.mutable_median_fee()->set_drops(
81 fee.mutable_open_ledger_fee()->set_drops(
84 return {reply, status};