Monero
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 
16 namespace 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 }
const bool m_rpc_payment_enabled
Definition: bootstrap_daemon.h:85
Definition: http.h:39
::std::string string
Definition: gtest-port.h:1097
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
std::string address() const noexcept
Definition: bootstrap_daemon.cpp:43
tools::wallet2::message_signature_result_t result
Definition: signature.cpp:62
bool switch_server_if_needed()
Definition: bootstrap_daemon.cpp:111
boost::optional< std::pair< uint64_t, uint64_t > > get_height()
Definition: bootstrap_daemon.cpp:53
net::http::client m_http_client
Definition: bootstrap_daemon.h:84
Holds cryptonote related classes and helpers.
Definition: blockchain_db.cpp:44
Definition: bootstrap_daemon.h:19
const std::unique_ptr< bootstrap_node::selector > m_selector
Definition: bootstrap_daemon.h:86
bool handle_result(bool success, const std::string &status)
Definition: bootstrap_daemon.cpp:71
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
void set_proxy(const std::string &address)
Definition: bootstrap_daemon.cpp:86
bool success
Definition: cold-transaction.cpp:57
bool set_server(const std::string &address, const boost::optional< epee::net_utils::http::login > &credentials=boost::none)
Definition: bootstrap_daemon.cpp:98
bool invoke_http_json(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct)
Definition: bootstrap_daemon.h:37
Received via RPC with do_not_relay set.
Definition: uri.py:1
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
bool invoke_http_bin(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct)
Definition: bootstrap_daemon.h:49
boost::mutex m_selector_mutex
Definition: bootstrap_daemon.h:87
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