JSON-RPC 2.0
JSON-RPC 2.0 Modern C++ Library
Loading...
Searching...
No Matches
jsonrpc_traits.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <concepts>
4
#include <variant>
5
6
#include "nlohmann/json.hpp"
7
8
namespace
jsonrpc::endpoint
{
9
10
template
<
typename
T>
11
concept
FromJson
=
requires
(nlohmann::json j) {
12
{ j.get<T>() } -> std::same_as<T>;
13
};
14
15
template
<
typename
T>
16
concept
ToJson
= std::is_same_v<T, std::monostate> ||
requires
(T value) {
17
{ nlohmann::json(value) } -> std::same_as<nlohmann::json>;
18
};
19
20
template
<
typename
T>
21
concept
JsonConvertible
=
FromJson<T>
&&
ToJson<T>
;
22
23
template
<
typename
T>
24
concept
NotJsonLike
=
25
!std::is_same_v<std::decay_t<T>, nlohmann::json> &&
26
!std::is_same_v<std::decay_t<T>, std::optional<nlohmann::json>>;
27
28
template
<
typename
T>
29
concept
HasMessageMethod
= std::is_same_v<T, std::monostate> ||
requires
(T e) {
30
{ e.Message() } -> std::convertible_to<std::string>;
31
};
32
33
}
// namespace jsonrpc::endpoint
jsonrpc::endpoint::FromJson
Definition
jsonrpc_traits.hpp:11
jsonrpc::endpoint::HasMessageMethod
Definition
jsonrpc_traits.hpp:29
jsonrpc::endpoint::JsonConvertible
Definition
jsonrpc_traits.hpp:21
jsonrpc::endpoint::NotJsonLike
Definition
jsonrpc_traits.hpp:24
jsonrpc::endpoint::ToJson
Definition
jsonrpc_traits.hpp:16
jsonrpc::endpoint
Definition
dispatcher.hpp:16
include
jsonrpc
endpoint
jsonrpc_traits.hpp
Generated by
1.11.0