xrpld
Loading...
Searching...
No Matches
CollectorManager.cpp
1#include <xrpld/app/main/CollectorManager.h>
2
3#include <xrpl/beast/insight/Collector.h>
4#include <xrpl/beast/insight/Group.h>
5#include <xrpl/beast/insight/Groups.h>
6#include <xrpl/beast/insight/NullCollector.h>
7#include <xrpl/beast/insight/StatsDCollector.h>
8#include <xrpl/beast/net/IPEndpoint.h>
9#include <xrpl/beast/utility/Journal.h>
10#include <xrpl/config/BasicConfig.h>
11#include <xrpl/config/Constants.h>
12
13#include <memory>
14#include <string>
15
16namespace xrpl {
17
19{
20public:
21 // NOLINTBEGIN(readability-identifier-naming)
25 // NOLINTEND(readability-identifier-naming)
26
27 CollectorManagerImp(Section const& params, beast::Journal journal) : journal_(journal)
28 {
29 std::string const& server = get(params, Keys::kServer);
30
31 if (server == "statsd")
32 {
33 beast::IP::Endpoint const address(
35 std::string const& prefix(get(params, Keys::kPrefix));
36
37 collector_ = beast::insight::StatsDCollector::make(address, prefix, journal);
38 }
39 else
40 {
42 }
43
45 }
46
47 ~CollectorManagerImp() override = default;
48
50 collector() override
51 {
52 return collector_;
53 }
54
56 group(std::string const& name) override
57 {
58 return groups_->get(name);
59 }
60};
61
62//------------------------------------------------------------------------------
63
66{
67 return std::make_unique<CollectorManagerImp>(params, journal);
68}
69
70} // namespace xrpl
A version-independent IP address and port combination.
Definition IPEndpoint.h:17
static Endpoint fromString(std::string const &s)
A generic endpoint for log messages.
Definition Journal.h:38
std::shared_ptr< Collector > ptr
Definition Collector.h:26
std::shared_ptr< Group > ptr
Definition Group.h:14
static std::shared_ptr< Collector > make()
static std::shared_ptr< StatsDCollector > make(IP::Endpoint const &address, std::string const &prefix, Journal journal)
Create a StatsD collector.
CollectorManagerImp(Section const &params, beast::Journal journal)
beast::insight::Collector::ptr const & collector() override
beast::insight::Group::ptr const & group(std::string const &name) override
beast::insight::Collector::ptr collector_
~CollectorManagerImp() override=default
std::unique_ptr< beast::insight::Groups > groups_
Provides the beast::insight::Collector service.
Holds a collection of configuration values.
Definition BasicConfig.h:24
T make_unique(T... args)
std::unique_ptr< Groups > makeGroups(Collector::ptr const &collector)
Create a group container that uses the specified collector.
Definition Groups.cpp:115
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
std::unique_ptr< CollectorManager > makeCollectorManager(Section const &params, beast::Journal journal)
T get(Section const &section, std::string const &name, T const &defaultValue=T{})
Retrieve a key/value pair from a section.
static constexpr auto kAddress
Definition Constants.h:84
static constexpr auto kPrefix
Definition Constants.h:143
static constexpr auto kServer
Definition Constants.h:153