Clio
develop
The XRP Ledger API server.
Theme:
Default
Round
Robot
Toggle main menu visibility
Loading...
Searching...
No Matches
VersionHandler.hpp
1
#pragma once
2
3
#include "rpc/common/APIVersion.hpp"
4
#include "rpc/common/Types.hpp"
5
#include "rpc/common/impl/APIVersionParser.hpp"
6
#include "util/config/ConfigDefinition.hpp"
7
8
#include <boost/json/conversion.hpp>
9
#include <boost/json/value.hpp>
10
11
#include <cstdint>
12
13
namespace
rpc
{
14
19
class
VersionHandler
{
20
rpc::impl::ProductionAPIVersionParser
apiVersionParser_;
21
22
public
:
26
struct
Output
{
27
uint32_t minVersion;
28
uint32_t maxVersion;
29
uint32_t currVersion;
30
};
31
37
explicit
VersionHandler
(
util::config::ClioConfigDefinition
const
& config)
38
: apiVersionParser_(
39
config.get<uint32_t>(
"api_version.default"
),
40
config.get<uint32_t>(
"api_version.min"
),
41
config.get<uint32_t>(
"api_version.max"
)
42
)
43
{
44
}
45
46
using
Result
=
HandlerReturnType<Output>
;
47
54
[[nodiscard]]
Result
55
process
([[maybe_unused]]
Context
const
& ctx)
const
56
{
57
using namespace
rpc
;
58
59
auto
output =
Output
{};
60
output.currVersion = apiVersionParser_.getDefaultVersion();
61
output.minVersion = apiVersionParser_.getMinVersion();
62
output.maxVersion = apiVersionParser_.getMaxVersion();
63
return
output;
64
}
65
66
private
:
67
friend
void
68
tag_invoke
(boost::json::value_from_tag, boost::json::value& jv, Output
const
& output)
69
{
70
jv = {
71
{
72
"version"
,
73
{
74
{
"first"
, output.minVersion},
75
{
"last"
, output.maxVersion},
76
{
"good"
, output.currVersion},
77
},
78
},
79
};
80
}
81
};
82
83
}
// namespace rpc
rpc::VersionHandler::process
Result process(Context const &ctx) const
Process the version command.
Definition
VersionHandler.hpp:55
rpc::VersionHandler::VersionHandler
VersionHandler(util::config::ClioConfigDefinition const &config)
Construct a new Version Handler object.
Definition
VersionHandler.hpp:37
rpc::impl::ProductionAPIVersionParser
Definition
APIVersionParser.hpp:15
util::config::ClioConfigDefinition
All the config data will be stored and extracted from this class.
Definition
ConfigDefinition.hpp:31
rpc
This namespace contains all the RPC logic and handlers.
Definition
AMMHelpers.cpp:17
rpc::HandlerReturnType
std::expected< OutputType, Status > HandlerReturnType
Return type for each individual handler.
Definition
Types.hpp:61
rpc::tag_invoke
void tag_invoke(boost::json::value_from_tag, boost::json::value &jv, BookChange const &change)
Implementation of value_from for BookChange type.
Definition
BookChangesHelper.hpp:233
rpc::Context
Context of an RPC call.
Definition
Types.hpp:98
rpc::Result
Result type used to return responses or error statuses to the Webserver subsystem.
Definition
Types.hpp:109
rpc::VersionHandler::Output
A struct to hold the output data of the command.
Definition
VersionHandler.hpp:26
src
rpc
handlers
VersionHandler.hpp
Generated by
1.17.0