Monero C++ Library
Loading...
Searching...
No Matches
monero::monero_rpc_connection Class Reference

#include <monero_rpc_connection.h>

Inheritance diagram for monero::monero_rpc_connection:
monero::serializable_struct

Public Member Functions

 monero_rpc_connection (const std::string &uri="", const std::string &username="", const std::string &password="", const std::string &proxy_uri="", const std::string &zmq_uri="", int priority=0, const boost::optional< uint32_t > &timeout_ms=boost::none)
 
 monero_rpc_connection (const monero_rpc_connection &rpc)
 
bool is_onion () const
 
bool is_i2p () const
 
void set_credentials (const std::string &username, const std::string &password)
 
void set_attribute (const std::string &key, const std::string &val)
 
std::string get_attribute (const std::string &key) const
 
boost::optional< bool > is_online () const
 
boost::optional< bool > is_authenticated () const
 
boost::optional< bool > is_connected () const
 
bool check_connection (const boost::optional< uint32_t > &timeout_ms=boost::none)
 
boost::property_tree::ptree send_json_request (const std::string &path, const std::shared_ptr< serializable_struct > &params=nullptr, const boost::optional< uint32_t > &timeout_ms=boost::none) const
 
monero_rpc_response send_json_request (const monero_rpc_request &request, const boost::optional< uint32_t > &timeout_ms=boost::none) const
 
boost::property_tree::ptree send_path_request (const std::string &path, const std::shared_ptr< serializable_struct > &params=nullptr, const boost::optional< uint32_t > &timeout_ms=boost::none) const
 
monero_rpc_response send_path_request (const monero_rpc_request &request, const boost::optional< uint32_t > &timeout_ms=boost::none) const
 
monero_rpc_response send_binary_request (const monero_rpc_request &request, const boost::optional< uint32_t > &timeout_ms=boost::none) const
 
rapidjson::Value to_rapidjson_val (rapidjson::Document::AllocatorType &allocator) const override
 
- Public Member Functions inherited from monero::serializable_struct
std::string serialize () const
 

Static Public Member Functions

static std::shared_ptr< monero_rpc_connectionfrom_property_tree (const boost::property_tree::ptree &node)
 
static bool compare (int p1, int p2)
 

Public Attributes

boost::optional< std::string > m_uri
 
boost::optional< std::string > m_username
 
boost::optional< std::string > m_password
 
boost::optional< std::string > m_proxy_uri
 
boost::optional< std::string > m_zmq_uri
 
boost::optional< uint32_t > m_timeout_ms
 
boost::optional< uint64_t > m_response_time
 
int m_priority
 

Protected Member Functions

void ensure_configured () const
 
std::string invoke_post (const boost::string_ref uri, const std::string &body, const boost::optional< uint32_t > &timeout_ms=boost::none) const
 
void send_rpc_request (const boost::string_ref uri, const monero_rpc_request &request, monero_rpc_response &response, const boost::optional< uint32_t > &timeout_ms=boost::none, bool binary=false) const
 

Protected Attributes

boost::recursive_mutex m_mutex
 
boost::optional< bool > m_is_online
 
boost::optional< bool > m_is_authenticated
 
std::unique_ptr< epee::net_utils::http::abstract_http_client > m_http_client
 
std::unordered_map< std::string, std::string > m_attributes
 
std::tuple< std::string, std::string, std::string, std::string > m_applied
 

Detailed Description

Maintains a connection and sends requests to a Monero RPC API.

Constructor & Destructor Documentation

◆ monero_rpc_connection() [1/2]

monero::monero_rpc_connection::monero_rpc_connection ( const std::string & uri = "",
const std::string & username = "",
const std::string & password = "",
const std::string & proxy_uri = "",
const std::string & zmq_uri = "",
int priority = 0,
const boost::optional< uint32_t > & timeout_ms = boost::none )

Initialize a new RPC connection.

Parameters
uriRPC connection uri
usernameRPC connection authentication username
passwordRPC connection authentication password
proxy_uriRPC connection proxy uri
zmq_uriRPC connection zmq uri
priorityRPC connection priority
timeout_msRPC connection timeout in milliseconds

◆ monero_rpc_connection() [2/2]

monero::monero_rpc_connection::monero_rpc_connection ( const monero_rpc_connection & rpc)

Copy a RPC connection.

Parameters
rpcRPC connection to copy

Member Function Documentation

◆ check_connection()

bool monero::monero_rpc_connection::check_connection ( const boost::optional< uint32_t > & timeout_ms = boost::none)

Check the connection and update online, authentication, and response time status.

Parameters
timeout_msthe maximum response time before considered offline
Returns

◆ compare()

bool monero::monero_rpc_connection::compare ( int p1,
int p2 )
static

Checks RPC connection priority order.

Parameters
c1first priority to compare
c2second priority to compare

◆ get_attribute()

std::string monero::monero_rpc_connection::get_attribute ( const std::string & key) const

Get connection attribute.

Parameters
keyis the attribute to get the value of
Returns
key's value if set

◆ is_authenticated()

boost::optional< bool > monero::monero_rpc_connection::is_authenticated ( ) const

Indicates if the connection is authenticated, which is set automatically by calling check_connection().

Returns
true if authenticated or no authentication, false if not authenticated, or null if not set

◆ is_connected()

boost::optional< bool > monero::monero_rpc_connection::is_connected ( ) const

Indicates if the connection is connected, which is set automatically by calling check_connection().

Returns
true or false to indicate if connected, or null if check_connection() has not been called

◆ is_i2p()

bool monero::monero_rpc_connection::is_i2p ( ) const

Indicates if the connection uri is a I2P server.

Returns
true or false to indicate if connection uri is a I2P server

◆ is_onion()

bool monero::monero_rpc_connection::is_onion ( ) const

Indicates if the connection uri is a TOR server.

Returns
true or false to indicate if connection uri is a TOR server

◆ is_online()

boost::optional< bool > monero::monero_rpc_connection::is_online ( ) const

Indicates if the connection is online, which is set automatically by calling check_connection().

Returns
true or false to indicate if online, or null if check_connection() has not been called

◆ send_binary_request()

monero_rpc_response monero::monero_rpc_connection::send_binary_request ( const monero_rpc_request & request,
const boost::optional< uint32_t > & timeout_ms = boost::none ) const

Send a binary RPC request.

Parameters
requestspecifies the method to request with paramesters
timeoutrequest timeout in milliseconds
Returns
the request's deserialized response

◆ send_json_request() [1/2]

monero_rpc_response monero::monero_rpc_connection::send_json_request ( const monero_rpc_request & request,
const boost::optional< uint32_t > & timeout_ms = boost::none ) const

Send a request to the RPC API.

Parameters
requestspecifies the method to request with parameters
timeoutrequest timeout in milliseconds
Returns
the RPC API response as a map

◆ send_json_request() [2/2]

boost::property_tree::ptree monero::monero_rpc_connection::send_json_request ( const std::string & path,
const std::shared_ptr< serializable_struct > & params = nullptr,
const boost::optional< uint32_t > & timeout_ms = boost::none ) const

Send a request to the RPC API.

Parameters
pathspecifies the method to request
paramsare the request's input parameters
Returns
the RPC API response as a map

◆ send_path_request() [1/2]

monero_rpc_response monero::monero_rpc_connection::send_path_request ( const monero_rpc_request & request,
const boost::optional< uint32_t > & timeout_ms = boost::none ) const

Send a RPC request to the given path and with the given paramters.

Parameters
requestspecifies the method to request with parameters
timeoutrequest timeout in milliseconds
Returns
the request's deserialized response

◆ send_path_request() [2/2]

boost::property_tree::ptree monero::monero_rpc_connection::send_path_request ( const std::string & path,
const std::shared_ptr< serializable_struct > & params = nullptr,
const boost::optional< uint32_t > & timeout_ms = boost::none ) const

Send a RPC request to the given path and with the given paramters.

E.g. "/get_transactions" with params

Parameters
pathis the url path of the request to invoke
paramsare request parameters sent in the body
Returns
the RPC API response as a map

◆ set_attribute()

void monero::monero_rpc_connection::set_attribute ( const std::string & key,
const std::string & val )

Set connection attribute.

Parameters
keyis the attribute key
valis the attribute value

◆ set_credentials()

void monero::monero_rpc_connection::set_credentials ( const std::string & username,
const std::string & password )

Set connection credentials.

Parameters
usernameusername to use in RPC authentication
passwordpassword to use in RPC authentication

◆ to_rapidjson_val()

rapidjson::Value monero::monero_rpc_connection::to_rapidjson_val ( rapidjson::Document::AllocatorType & allocator) const
overridevirtual

Converts the struct to a rapidjson Value.

Parameters
allocatoris the rapidjson document allocator
Returns
the struct as a rapidjson Value

Implements monero::serializable_struct.


The documentation for this class was generated from the following files: