xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
libxrpl
conditions
error.cpp
1
#include <xrpl/conditions/detail/error.h>
2
3
#include <xrpl/basics/safe_cast.h>
4
5
#include <
string
>
6
#include <
system_error
>
7
#include <
type_traits
>
8
9
namespace
xrpl::cryptoconditions
{
10
namespace
detail
{
11
12
class
CryptoconditionsErrorCategory
:
public
std::error_category
13
{
14
public
:
15
explicit
CryptoconditionsErrorCategory
() =
default
;
16
17
[[nodiscard]]
char
const
*
18
name
() const noexcept
override
19
{
20
return
"cryptoconditions"
;
21
}
22
23
[[nodiscard]]
std::string
24
message
(
int
ev)
const override
25
{
26
switch
(
safeCast<Error>
(ev))
27
{
28
case
Error::UnsupportedType
:
29
return
"Specification: Requested type not supported."
;
30
31
case
Error::UnsupportedSubtype
:
32
return
"Specification: Requested subtype not supported."
;
33
34
case
Error::UnknownType
:
35
return
"Specification: Requested type not recognized."
;
36
37
case
Error::UnknownSubtype
:
38
return
"Specification: Requested subtypes not recognized."
;
39
40
case
Error::FingerprintSize
:
41
return
"Specification: Incorrect fingerprint size."
;
42
43
case
Error::IncorrectEncoding
:
44
return
"Specification: Incorrect encoding."
;
45
46
case
Error::TrailingGarbage
:
47
return
"Bad buffer: contains trailing garbage."
;
48
49
case
Error::BufferEmpty
:
50
return
"Bad buffer: no data."
;
51
52
case
Error::BufferOverfull
:
53
return
"Bad buffer: overfull."
;
54
55
case
Error::BufferUnderfull
:
56
return
"Bad buffer: underfull."
;
57
58
case
Error::MalformedEncoding
:
59
return
"Malformed DER encoding."
;
60
61
case
Error::UnexpectedTag
:
62
return
"Malformed DER encoding: Unexpected tag."
;
63
64
case
Error::ShortPreamble
:
65
return
"Malformed DER encoding: Short preamble."
;
66
67
case
Error::LongTag
:
68
return
"Implementation limit: Overlong tag."
;
69
70
case
Error::LargeSize
:
71
return
"Implementation limit: Large payload."
;
72
73
case
Error::PreimageTooLong
:
74
return
"Implementation limit: Specified preimage is too long."
;
75
76
case
Error::Generic
:
77
default
:
78
return
"generic error"
;
79
}
80
}
81
82
[[nodiscard]]
std::error_condition
83
default_error_condition
(
int
ev)
const
noexcept
override
84
{
85
return
std::error_condition
{ev, *
this
};
86
}
87
88
[[nodiscard]]
bool
89
equivalent
(
int
ev,
std::error_condition
const
& condition)
const
noexcept
override
90
{
91
return
&condition.category() ==
this
&& condition.value() == ev;
92
}
93
94
[[nodiscard]]
bool
95
equivalent
(
std::error_code
const
& error,
int
ev)
const
noexcept
override
96
{
97
return
&error.category() ==
this
&& error.value() == ev;
98
}
99
};
100
101
inline
std::error_category
const
&
102
getCryptoconditionsErrorCategory
()
103
{
104
static
CryptoconditionsErrorCategory
const
kCat{};
105
return
kCat;
106
}
107
108
}
// namespace detail
109
110
std::error_code
111
make_error_code
(
Error
ev)
112
{
113
return
std::error_code
{
114
safeCast<std::underlying_type_t<Error>
>(ev),
detail::getCryptoconditionsErrorCategory
()};
115
}
116
117
}
// namespace xrpl::cryptoconditions
std::string
xrpl::cryptoconditions::detail::CryptoconditionsErrorCategory
Definition
error.cpp:13
xrpl::cryptoconditions::detail::CryptoconditionsErrorCategory::message
std::string message(int ev) const override
Definition
error.cpp:24
xrpl::cryptoconditions::detail::CryptoconditionsErrorCategory::default_error_condition
std::error_condition default_error_condition(int ev) const noexcept override
Definition
error.cpp:83
xrpl::cryptoconditions::detail::CryptoconditionsErrorCategory::equivalent
bool equivalent(int ev, std::error_condition const &condition) const noexcept override
Definition
error.cpp:89
xrpl::cryptoconditions::detail::CryptoconditionsErrorCategory::name
char const * name() const noexcept override
Definition
error.cpp:18
xrpl::cryptoconditions::detail::CryptoconditionsErrorCategory::equivalent
bool equivalent(std::error_code const &error, int ev) const noexcept override
Definition
error.cpp:95
xrpl::cryptoconditions::detail::CryptoconditionsErrorCategory::CryptoconditionsErrorCategory
CryptoconditionsErrorCategory()=default
std::error_category
std::error_code
std::error_condition
xrpl::cryptoconditions::detail
Definition
Condition.cpp:17
xrpl::cryptoconditions::detail::getCryptoconditionsErrorCategory
std::error_category const & getCryptoconditionsErrorCategory()
Definition
error.cpp:102
xrpl::cryptoconditions
Definition
Condition.h:14
xrpl::cryptoconditions::make_error_code
std::error_code make_error_code(Error ev)
Definition
error.cpp:111
xrpl::cryptoconditions::Error
Error
Definition
error.h:7
xrpl::cryptoconditions::Error::UnknownSubtype
@ UnknownSubtype
Definition
error.h:12
xrpl::cryptoconditions::Error::BufferOverfull
@ BufferOverfull
Definition
error.h:17
xrpl::cryptoconditions::Error::UnexpectedTag
@ UnexpectedTag
Definition
error.h:21
xrpl::cryptoconditions::Error::FingerprintSize
@ FingerprintSize
Definition
error.h:13
xrpl::cryptoconditions::Error::IncorrectEncoding
@ IncorrectEncoding
Definition
error.h:14
xrpl::cryptoconditions::Error::BufferUnderfull
@ BufferUnderfull
Definition
error.h:18
xrpl::cryptoconditions::Error::LargeSize
@ LargeSize
Definition
error.h:23
xrpl::cryptoconditions::Error::Generic
@ Generic
Definition
error.h:8
xrpl::cryptoconditions::Error::UnsupportedType
@ UnsupportedType
Definition
error.h:9
xrpl::cryptoconditions::Error::UnsupportedSubtype
@ UnsupportedSubtype
Definition
error.h:10
xrpl::cryptoconditions::Error::MalformedEncoding
@ MalformedEncoding
Definition
error.h:19
xrpl::cryptoconditions::Error::UnknownType
@ UnknownType
Definition
error.h:11
xrpl::cryptoconditions::Error::BufferEmpty
@ BufferEmpty
Definition
error.h:16
xrpl::cryptoconditions::Error::PreimageTooLong
@ PreimageTooLong
Definition
error.h:24
xrpl::cryptoconditions::Error::ShortPreamble
@ ShortPreamble
Definition
error.h:20
xrpl::cryptoconditions::Error::TrailingGarbage
@ TrailingGarbage
Definition
error.h:15
xrpl::cryptoconditions::Error::LongTag
@ LongTag
Definition
error.h:22
xrpl::safeCast
constexpr Dest safeCast(Src s) noexcept
Definition
safe_cast.h:21
string
system_error
type_traits
Generated by
1.17.0