hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
metrics.hpp
Go to the documentation of this file.
1 
6 #ifndef IROHA_MAINTENANCE_METRICS_HPP
7 #define IROHA_MAINTENANCE_METRICS_HPP
8 
9 #include <prometheus/exposer.h>
10 #include <prometheus/registry.h>
11 
12 #include <memory>
13 #include <optional>
14 #include <string>
15 #include <thread>
16 
17 #include "ametsuchi/storage.hpp"
18 #include "ametsuchi/wsv_query.hpp"
21 #include "logger/logger_fwd.hpp"
22 #include "main/subscription.hpp"
24 
25 class Metrics : public std::enable_shared_from_this<Metrics> {
27  bool,
28  iroha::network::OrderingEvent>; // FixMe subscribtion ≠ subscriber
29  using BlockPtr = std::shared_ptr<const shared_model::interface::Block>;
31 
32  std::string listen_addr_port_;
33  std::shared_ptr<prometheus::Exposer> exposer_;
34  std::shared_ptr<prometheus::Registry> registry_;
35  std::shared_ptr<iroha::ametsuchi::Storage> storage_;
36  std::shared_ptr<BlockSubscriber> block_subscriber_;
37  std::shared_ptr<OnProposalSubscription> on_proposal_subscription_;
38  logger::LoggerPtr logger_;
39 
40  Metrics(std::string const &listen_addr,
41  std::shared_ptr<iroha::ametsuchi::Storage> storage,
42  logger::LoggerPtr const &logger);
43 
44  public:
45  std::string const &getListenAddress() const {
46  return listen_addr_port_;
47  }
48 
49  template <class... Ts>
50  static std::shared_ptr<Metrics> create(Ts &&... args) {
51  struct Resolver : Metrics {
52  Resolver(Ts &&... args) : Metrics(std::forward<Ts>(args)...) {}
53  };
54  return std::make_shared<Resolver>(std::forward<Ts>(args)...);
55  }
56 };
57 
58 #endif // IROHA_MAINTENANCE_METRICS_HPP
Definition: subscription_fwd.hpp:70
static std::shared_ptr< Metrics > create(Ts &&... args)
Definition: metrics.hpp:50
std::shared_ptr< Logger > LoggerPtr
Definition: logger_fwd.hpp:22
Definition: metrics.hpp:25
Definition: ordering_gate_common.hpp:27
Definition: dummy_logger.hpp:11
std::string const & getListenAddress() const
Definition: metrics.hpp:45