xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
protocol
STXChainBridge.h
1
#pragma once
2
3
#include <xrpl/basics/CountedObject.h>
4
#include <xrpl/json/json_value.h>
5
#include <xrpl/protocol/AccountID.h>
6
#include <xrpl/protocol/Issue.h>
7
#include <xrpl/protocol/SField.h>
8
#include <xrpl/protocol/STAccount.h>
9
#include <xrpl/protocol/STBase.h>
10
#include <xrpl/protocol/STIssue.h>
11
#include <xrpl/protocol/Serializer.h>
12
13
#include <
cstddef
>
14
#include <
memory
>
15
#include <
string
>
16
#include <
tuple
>
17
18
namespace
xrpl
{
19
20
class
Serializer
;
21
class
STObject
;
22
23
class
STXChainBridge
final :
public
STBase
,
public
CountedObject
<STXChainBridge>
24
{
25
STAccount
lockingChainDoor_
{sfLockingChainDoor};
26
STIssue
lockingChainIssue_
{sfLockingChainIssue};
27
STAccount
issuingChainDoor_
{sfIssuingChainDoor};
28
STIssue
issuingChainIssue_
{sfIssuingChainIssue};
29
30
public
:
31
using
value_type
=
STXChainBridge
;
32
33
enum class
ChainType
{
Locking
,
Issuing
};
34
35
static
ChainType
36
otherChain
(
ChainType
ct);
37
38
static
ChainType
39
srcChain
(
bool
wasLockingChainSend);
40
41
static
ChainType
42
dstChain
(
bool
wasLockingChainSend);
43
44
STXChainBridge
();
45
46
explicit
STXChainBridge
(
SField
const
& name);
47
48
STXChainBridge
(
STXChainBridge
const
& rhs) =
default
;
49
50
STXChainBridge
(
STObject
const
& o);
51
52
STXChainBridge
(
53
AccountID
const
& srcChainDoor,
54
Issue
const
& srcChainIssue,
55
AccountID
const
& dstChainDoor,
56
Issue
const
& dstChainIssue);
57
58
explicit
STXChainBridge
(
json::Value
const
& v);
59
60
explicit
STXChainBridge
(
SField
const
& name,
json::Value
const
& v);
61
62
explicit
STXChainBridge
(
SerialIter
& sit,
SField
const
& name);
63
64
STXChainBridge
&
65
operator=
(
STXChainBridge
const
& rhs) =
default
;
66
67
[[nodiscard]]
std::string
68
getText
()
const override
;
69
70
[[nodiscard]]
STObject
71
toSTObject
()
const
;
72
73
[[nodiscard]]
AccountID
const
&
74
lockingChainDoor
()
const
;
75
76
[[nodiscard]]
Issue
const
&
77
lockingChainIssue
()
const
;
78
79
[[nodiscard]]
AccountID
const
&
80
issuingChainDoor
()
const
;
81
82
[[nodiscard]]
Issue
const
&
83
issuingChainIssue
()
const
;
84
85
[[nodiscard]]
AccountID
const
&
86
door
(
ChainType
ct)
const
;
87
88
[[nodiscard]]
Issue
const
&
89
issue
(
ChainType
ct)
const
;
90
91
[[nodiscard]]
SerializedTypeID
92
getSType
()
const override
;
93
94
[[nodiscard]]
json::Value
getJson
(
JsonOptions
)
const override
;
95
96
void
97
add
(
Serializer
& s)
const override
;
98
99
[[nodiscard]]
bool
100
isEquivalent
(
STBase
const
& t)
const override
;
101
102
[[nodiscard]]
bool
103
isDefault
()
const override
;
104
105
[[nodiscard]]
value_type
const
&
106
value
() const noexcept;
107
108
private:
109
static
std
::unique_ptr<
STXChainBridge
>
110
construct
(
SerialIter
&,
SField
const& name);
111
112
STBase
*
113
copy
(
std
::
size_t
n,
void
* buf) const override;
114
STBase
*
115
move
(
std
::
size_t
n,
void
* buf) override;
116
117
friend
bool
118
operator==(
STXChainBridge
const& lhs,
STXChainBridge
const& rhs);
119
120
friend
bool
121
operator<(
STXChainBridge
const& lhs,
STXChainBridge
const& rhs);
122
};
123
124
inline
bool
125
operator==(
STXChainBridge
const& lhs,
STXChainBridge
const& rhs)
126
{
127
return
std::tie
(
128
lhs.lockingChainDoor_,
129
lhs.lockingChainIssue_,
130
lhs.issuingChainDoor_,
131
lhs.issuingChainIssue_) ==
132
std::tie
(
133
rhs.lockingChainDoor_,
134
rhs.lockingChainIssue_,
135
rhs.issuingChainDoor_,
136
rhs.issuingChainIssue_);
137
}
138
139
inline
bool
140
operator<
(
STXChainBridge
const
& lhs,
STXChainBridge
const
& rhs)
141
{
142
return
std::tie
(
143
lhs.
lockingChainDoor_
,
144
lhs.
lockingChainIssue_
,
145
lhs.
issuingChainDoor_
,
146
lhs.
issuingChainIssue_
) <
147
std::tie
(
148
rhs.
lockingChainDoor_
,
149
rhs.
lockingChainIssue_
,
150
rhs.
issuingChainDoor_
,
151
rhs.
issuingChainIssue_
);
152
}
153
154
inline
AccountID
const
&
155
STXChainBridge::lockingChainDoor
()
const
156
{
157
return
lockingChainDoor_
.value();
158
};
159
160
inline
Issue
const
&
161
STXChainBridge::lockingChainIssue
()
const
162
{
163
return
lockingChainIssue_
.value().get<
Issue
>();
164
};
165
166
inline
AccountID
const
&
167
STXChainBridge::issuingChainDoor
()
const
168
{
169
return
issuingChainDoor_
.value();
170
};
171
172
inline
Issue
const
&
173
STXChainBridge::issuingChainIssue
()
const
174
{
175
return
issuingChainIssue_
.value().get<
Issue
>();
176
};
177
178
inline
STXChainBridge::value_type
const
&
179
STXChainBridge::value
() const noexcept
180
{
181
return
*
this
;
182
}
183
184
inline
AccountID
const
&
185
STXChainBridge::door
(
ChainType
ct)
const
186
{
187
if
(ct ==
ChainType::Locking
)
188
return
lockingChainDoor
();
189
return
issuingChainDoor
();
190
}
191
192
inline
Issue
const
&
193
STXChainBridge::issue
(
ChainType
ct)
const
194
{
195
if
(ct ==
ChainType::Locking
)
196
return
lockingChainIssue
();
197
return
issuingChainIssue
();
198
}
199
200
inline
STXChainBridge::ChainType
201
STXChainBridge::otherChain
(
ChainType
ct)
202
{
203
if
(ct ==
ChainType::Locking
)
204
return
ChainType::Issuing
;
205
return
ChainType::Locking
;
206
}
207
208
inline
STXChainBridge::ChainType
209
STXChainBridge::srcChain
(
bool
wasLockingChainSend)
210
{
211
if
(wasLockingChainSend)
212
return
ChainType::Locking
;
213
return
ChainType::Issuing
;
214
}
215
216
inline
STXChainBridge::ChainType
217
STXChainBridge::dstChain
(
bool
wasLockingChainSend)
218
{
219
if
(wasLockingChainSend)
220
return
ChainType::Issuing
;
221
return
ChainType::Locking
;
222
}
223
224
}
// namespace xrpl
std::string
json::Value
Represents a JSON value.
Definition
json_value.h:117
xrpl::CountedObject< STXChainBridge >::CountedObject
CountedObject() noexcept
Definition
CountedObject.h:119
xrpl::Issue
A currency issued by an account.
Definition
Issue.h:18
xrpl::SField
Identifies fields.
Definition
SField.h:132
xrpl::STAccount
Definition
STAccount.h:16
xrpl::STBase::STBase
STBase()
Definition
STBase.cpp:15
xrpl::STIssue
Definition
STIssue.h:21
xrpl::STObject
Definition
STObject.h:49
xrpl::STXChainBridge::construct
static std::unique_ptr< STXChainBridge > construct(SerialIter &, SField const &name)
Definition
libxrpl/protocol/STXChainBridge.cpp:188
xrpl::STXChainBridge::issuingChainIssue_
STIssue issuingChainIssue_
Definition
STXChainBridge.h:28
xrpl::STXChainBridge::getText
std::string getText() const override
Definition
libxrpl/protocol/STXChainBridge.cpp:142
xrpl::STXChainBridge::issuingChainDoor_
STAccount issuingChainDoor_
Definition
STXChainBridge.h:27
xrpl::STXChainBridge::STXChainBridge
STXChainBridge()
Definition
libxrpl/protocol/STXChainBridge.cpp:23
xrpl::STXChainBridge::ChainType
ChainType
Definition
STXChainBridge.h:33
xrpl::STXChainBridge::ChainType::Locking
@ Locking
Definition
STXChainBridge.h:33
xrpl::STXChainBridge::ChainType::Issuing
@ Issuing
Definition
STXChainBridge.h:33
xrpl::STXChainBridge::operator=
STXChainBridge & operator=(STXChainBridge const &rhs)=default
xrpl::STXChainBridge::issuingChainDoor
AccountID const & issuingChainDoor() const
Definition
STXChainBridge.h:167
xrpl::STXChainBridge::door
AccountID const & door(ChainType ct) const
Definition
STXChainBridge.h:185
xrpl::STXChainBridge::dstChain
static ChainType dstChain(bool wasLockingChainSend)
Definition
STXChainBridge.h:217
xrpl::STXChainBridge::move
STBase * move(std::size_t n, void *buf) override
Definition
libxrpl/protocol/STXChainBridge.cpp:200
xrpl::STXChainBridge::lockingChainDoor_
STAccount lockingChainDoor_
Definition
STXChainBridge.h:25
xrpl::STXChainBridge::getJson
json::Value getJson(JsonOptions) const override
Definition
libxrpl/protocol/STXChainBridge.cpp:131
xrpl::STXChainBridge::add
void add(Serializer &s) const override
Definition
libxrpl/protocol/STXChainBridge.cpp:122
xrpl::STXChainBridge::lockingChainDoor
AccountID const & lockingChainDoor() const
Definition
STXChainBridge.h:155
xrpl::STXChainBridge::lockingChainIssue_
STIssue lockingChainIssue_
Definition
STXChainBridge.h:26
xrpl::STXChainBridge::value
value_type const & value() const noexcept
Definition
STXChainBridge.h:179
xrpl::STXChainBridge::operator<
friend bool operator<(STXChainBridge const &lhs, STXChainBridge const &rhs)
Definition
STXChainBridge.h:140
xrpl::STXChainBridge::isDefault
bool isDefault() const override
Definition
libxrpl/protocol/STXChainBridge.cpp:181
xrpl::STXChainBridge::copy
STBase * copy(std::size_t n, void *buf) const override
Definition
libxrpl/protocol/STXChainBridge.cpp:194
xrpl::STXChainBridge::isEquivalent
bool isEquivalent(STBase const &t) const override
Definition
libxrpl/protocol/STXChainBridge.cpp:174
xrpl::STXChainBridge::STXChainBridge
STXChainBridge(STXChainBridge const &rhs)=default
xrpl::STXChainBridge::srcChain
static ChainType srcChain(bool wasLockingChainSend)
Definition
STXChainBridge.h:209
xrpl::STXChainBridge::value_type
STXChainBridge value_type
Definition
STXChainBridge.h:31
xrpl::STXChainBridge::getSType
SerializedTypeID getSType() const override
Definition
libxrpl/protocol/STXChainBridge.cpp:168
xrpl::STXChainBridge::issue
Issue const & issue(ChainType ct) const
Definition
STXChainBridge.h:193
xrpl::STXChainBridge::issuingChainIssue
Issue const & issuingChainIssue() const
Definition
STXChainBridge.h:173
xrpl::STXChainBridge::otherChain
static ChainType otherChain(ChainType ct)
Definition
STXChainBridge.h:201
xrpl::STXChainBridge::toSTObject
STObject toSTObject() const
Definition
libxrpl/protocol/STXChainBridge.cpp:157
xrpl::STXChainBridge::lockingChainIssue
Issue const & lockingChainIssue() const
Definition
STXChainBridge.h:161
xrpl::SerialIter
Definition
Serializer.h:478
xrpl::Serializer
Definition
Serializer.h:23
cstddef
memory
std
STL namespace.
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::SerializedTypeID
SerializedTypeID
Definition
SField.h:94
xrpl::AccountID
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition
AccountID.h:34
string
xrpl::JsonOptions
Note, should be treated as flags that can be | and &.
Definition
STBase.h:22
std::tie
T tie(T... args)
tuple
Generated by
1.17.0