20#ifndef RIPPLE_CORE_GRPCSERVER_H_INCLUDED
21#define RIPPLE_CORE_GRPCSERVER_H_INCLUDED
23#include <xrpld/app/main/Application.h>
24#include <xrpld/core/JobQueue.h>
25#include <xrpld/net/InfoSub.h>
26#include <xrpld/rpc/Context.h>
27#include <xrpld/rpc/GRPCHandlers.h>
28#include <xrpld/rpc/Role.h>
29#include <xrpld/rpc/detail/Handler.h>
30#include <xrpld/rpc/detail/RPCHelpers.h>
31#include <xrpld/rpc/detail/Tuning.h>
32#include <xrpl/protocol/ErrorCodes.h>
33#include <xrpl/resource/Charge.h>
35#include <xrpl/proto/org/xrpl/rpc/v1/xrp_ledger.grpc.pb.h>
36#include <grpcpp/grpcpp.h>
80 org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService
service_;
96 template <
class Request,
class Response>
98 org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService&,
101 grpc::ServerAsyncResponseWriter<Response>*,
102 grpc::CompletionQueue*,
103 grpc::ServerCompletionQueue*,
108 template <
class Request,
class Response>
114 template <
class Request,
class Response>
116 org::xrpl::rpc::v1::XRPLedgerAPIService::Stub*,
117 grpc::ClientContext*,
146 boost::asio::ip::tcp::endpoint
151 template <
class Request,
class Response>
159 org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService&
service_;
162 grpc::ServerCompletionQueue&
cq_;
208 org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService& service,
209 grpc::ServerCompletionQueue& cq,
321 boost::asio::ip::tcp::endpoint
A generic endpoint for log messages.
Resource::Charge loadType_
Forward< Request, Response > forward_
Resource::Consumer getUsage()
std::optional< std::string > getUser()
grpc::ServerCompletionQueue & cq_
Handler< Request, Response > handler_
virtual ~CallData()=default
Resource::Charge getLoadType()
void setIsUnlimited(Response &response, bool isUnlimited)
std::optional< boost::asio::ip::address > getClientIpAddress()
RPC::Condition requiredCondition_
std::optional< boost::asio::ip::tcp::endpoint > getProxiedClientEndpoint()
std::atomic_bool finished_
CallData & operator=(const CallData &)=delete
BindListener< Request, Response > bindListener_
grpc::ServerAsyncResponseWriter< Response > responder_
Role getRole(bool isUnlimited)
std::vector< boost::asio::ip::address > const & secureGatewayIPs_
std::shared_ptr< Processor > clone() override
CallData(const CallData &)=delete
std::optional< boost::asio::ip::tcp::endpoint > getClientEndpoint()
std::optional< boost::asio::ip::address > getProxiedClientIpAddress()
org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService & service_
virtual void process() override
virtual bool isFinished() override
void forwardToP2p(RPC::GRPCContext< Request > &context)
std::string serverAddress_
std::vector< std::shared_ptr< Processor > > setupListeners()
GRPCServerImpl & operator=(const GRPCServerImpl &)=delete
std::unique_ptr< grpc::Server > server_
std::unique_ptr< grpc::ServerCompletionQueue > cq_
org::xrpl::rpc::v1::XRPLedgerAPIService::AsyncService service_
std::vector< std::shared_ptr< Processor > > requests_
static unsigned constexpr apiVersion
boost::asio::ip::tcp::endpoint getEndpoint() const
std::vector< boost::asio::ip::address > secureGatewayIPs_
std::uint16_t serverPort_
GRPCServerImpl(const GRPCServerImpl &)=delete
GRPCServer(Application &app)
GRPCServer & operator=(const GRPCServer &)=delete
boost::asio::ip::tcp::endpoint getEndpoint() const
GRPCServer(const GRPCServer &)=delete
Processor(const Processor &)=delete
virtual bool isFinished()=0
Processor & operator=(const Processor &)=delete
virtual std::shared_ptr< Processor > clone()=0
virtual ~Processor()=default
An endpoint that consumes resources.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
bool isUnlimited(Role const &role)
ADMIN and IDENTIFIED roles shall have unlimited resources.
Role
Indicates the level of administrative permission to grant.