JSON-RPC 2.0
JSON-RPC 2.0 Modern C++ Library
Loading...
Searching...
No Matches
request.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <expected>
4#include <functional>
5#include <optional>
6#include <string>
7
8#include <nlohmann/json.hpp>
9
12
13namespace jsonrpc::endpoint {
14
15class Request {
16 public:
17 Request(
18 std::string method, std::optional<nlohmann::json> params,
19 const std::function<RequestId()>& id_generator);
20
21 Request(
22 std::string method, std::optional<nlohmann::json> params, RequestId id);
23
24 explicit Request(
25 std::string method, std::optional<nlohmann::json> params = std::nullopt);
26
27 static auto FromJson(const nlohmann::json& json_obj)
28 -> std::expected<Request, error::RpcError>;
29
30 [[nodiscard]] auto GetMethod() const -> const std::string& {
31 return method_;
32 }
33
34 [[nodiscard]] auto GetParams() const -> const std::optional<nlohmann::json>& {
35 return params_;
36 }
37
38 [[nodiscard]] auto IsNotification() const -> bool {
39 return is_notification_;
40 }
41
42 [[nodiscard]] auto RequiresResponse() const -> bool;
43
44 [[nodiscard]] auto GetId() const -> RequestId;
45
46 [[nodiscard]] auto Dump() const -> std::string;
47
48 [[nodiscard]] auto ToJson() const -> nlohmann::json;
49
50 private:
51 std::string method_;
52 std::optional<nlohmann::json> params_;
53 bool is_notification_;
54 RequestId id_;
55};
56
57} // namespace jsonrpc::endpoint
auto GetMethod() const -> const std::string &
Definition request.hpp:30
auto GetParams() const -> const std::optional< nlohmann::json > &
Definition request.hpp:34
auto GetId() const -> RequestId
Definition request.cpp:89
auto IsNotification() const -> bool
Definition request.hpp:38
auto RequiresResponse() const -> bool
Definition request.cpp:85
Request(std::string method, std::optional< nlohmann::json > params, const std::function< RequestId()> &id_generator)
Definition request.cpp:8
auto Dump() const -> std::string
static auto FromJson(const nlohmann::json &json_obj) -> std::expected< Request, error::RpcError >
Definition request.cpp:31
std::variant< int64_t, std::string > RequestId
Definition types.hpp:15