Monero
Loading...
Searching...
No Matches
bootstrap_daemon.h
Go to the documentation of this file.
1#pragma once
2
3#include <functional>
4#include <map>
5#include <utility>
6
7#include <boost/optional/optional.hpp>
8#include <boost/thread/mutex.hpp>
9#include <boost/utility/string_ref.hpp>
10
11#include "net/http.h"
13
15
16namespace cryptonote
17{
18
20 {
21 public:
23 std::function<std::map<std::string, bool>()> get_public_nodes,
24 bool rpc_payment_enabled,
25 const std::string &proxy);
27 const std::string &address,
28 boost::optional<epee::net_utils::http::login> credentials,
29 bool rpc_payment_enabled,
30 const std::string &proxy);
31
32 std::string address() const noexcept;
33 boost::optional<std::pair<uint64_t, uint64_t>> get_height();
34 bool handle_result(bool success, const std::string &status);
35
36 template <class t_request, class t_response>
37 bool invoke_http_json(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct)
38 {
40 {
41 return false;
42 }
43
44 const bool result = epee::net_utils::invoke_http_json(uri, out_struct, result_struct, m_http_client);
45 return handle_result(result, result_struct.status);
46 }
47
48 template <class t_request, class t_response>
49 bool invoke_http_bin(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct)
50 {
52 {
53 return false;
54 }
55
56 const bool result = epee::net_utils::invoke_http_bin(uri, out_struct, result_struct, m_http_client);
57 return handle_result(result, result_struct.status);
58 }
59
60 template <class t_request, class t_response>
61 bool invoke_http_json_rpc(const boost::string_ref command_name, const t_request &out_struct, t_response &result_struct)
62 {
64 {
65 return false;
66 }
67
69 "/json_rpc",
70 std::string(command_name.begin(), command_name.end()),
71 out_struct,
72 result_struct,
74 return handle_result(result, result_struct.status);
75 }
76
77 void set_proxy(const std::string &address);
78
79 private:
80 bool set_server(const std::string &address, const boost::optional<epee::net_utils::http::login> &credentials = boost::none);
82
83 private:
86 const std::unique_ptr<bootstrap_node::selector> m_selector;
87 boost::mutex m_selector_mutex;
88 };
89
90}
bool switch_server_if_needed()
Definition bootstrap_daemon.cpp:111
bool invoke_http_json_rpc(const boost::string_ref command_name, const t_request &out_struct, t_response &result_struct)
Definition bootstrap_daemon.h:61
bootstrap_daemon(std::function< std::map< std::string, bool >()> get_public_nodes, bool rpc_payment_enabled, const std::string &proxy)
Definition bootstrap_daemon.cpp:18
boost::mutex m_selector_mutex
Definition bootstrap_daemon.h:87
bool invoke_http_json(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct)
Definition bootstrap_daemon.h:37
net::http::client m_http_client
Definition bootstrap_daemon.h:84
const bool m_rpc_payment_enabled
Definition bootstrap_daemon.h:85
bool set_server(const std::string &address, const boost::optional< epee::net_utils::http::login > &credentials=boost::none)
Definition bootstrap_daemon.cpp:98
void set_proxy(const std::string &address)
Definition bootstrap_daemon.cpp:86
boost::optional< std::pair< uint64_t, uint64_t > > get_height()
Definition bootstrap_daemon.cpp:53
std::string address() const noexcept
Definition bootstrap_daemon.cpp:43
bool handle_result(bool success, const std::string &status)
Definition bootstrap_daemon.cpp:71
bool invoke_http_bin(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct)
Definition bootstrap_daemon.h:49
const std::unique_ptr< bootstrap_node::selector > m_selector
Definition bootstrap_daemon.h:86
Definition http.h:40
bool success
Definition cold-transaction.cpp:57
uint32_t address
Definition getifaddr.c:269
Holds cryptonote related classes and helpers.
Definition blockchain_db.cpp:45
bool invoke_http_bin(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct, t_transport &transport, std::chrono::milliseconds timeout=std::chrono::seconds(15), const boost::string_ref method="POST")
Definition http_abstract_invoke.h:76
bool invoke_http_json_rpc(const boost::string_ref uri, std::string method_name, const t_request &out_struct, t_response &result_struct, epee::json_rpc::error &error_struct, t_transport &transport, std::chrono::milliseconds timeout=std::chrono::seconds(15), const boost::string_ref http_method="POST", const std::string &req_id="0")
Definition http_abstract_invoke.h:110
bool invoke_http_json(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct, t_transport &transport, std::chrono::milliseconds timeout=std::chrono::seconds(15), const boost::string_ref method="POST")
Definition http_abstract_invoke.h:42
Definition uri.py:1
tools::wallet2::message_signature_result_t result
Definition signature.cpp:62