rippled
Loading...
Searching...
No Matches
libxrpl
resource
Consumer.cpp
1
#include <xrpl/basics/Log.h>
2
#include <xrpl/beast/utility/Journal.h>
3
#include <xrpl/beast/utility/instrumentation.h>
4
#include <xrpl/resource/Charge.h>
5
#include <xrpl/resource/Consumer.h>
6
#include <xrpl/resource/Disposition.h>
7
#include <xrpl/resource/detail/Entry.h>
8
#include <xrpl/resource/detail/Logic.h>
9
10
#include <
ostream
>
11
#include <
string
>
12
13
namespace
xrpl
{
14
namespace
Resource {
15
16
Consumer::Consumer
(
Logic
& logic,
Entry
& entry) : m_logic(&logic), m_entry(&entry)
17
{
18
}
19
20
Consumer::Consumer
() : m_logic(nullptr), m_entry(nullptr)
21
{
22
}
23
24
Consumer::Consumer
(
Consumer
const
& other) : m_logic(other.m_logic), m_entry(nullptr)
25
{
26
if
(
m_logic
&& other.
m_entry
)
27
{
28
m_entry
= other.
m_entry
;
29
m_logic
->
acquire
(*
m_entry
);
30
}
31
}
32
33
Consumer::~Consumer
()
34
{
35
if
(
m_logic
&&
m_entry
)
36
m_logic
->
release
(*
m_entry
);
37
}
38
39
Consumer
&
40
Consumer::operator=
(
Consumer
const
& other)
41
{
42
// remove old ref
43
if
(
m_logic
&&
m_entry
)
44
m_logic
->
release
(*
m_entry
);
45
46
m_logic
= other.
m_logic
;
47
m_entry
= other.
m_entry
;
48
49
// add new ref
50
if
(
m_logic
&&
m_entry
)
51
m_logic
->
acquire
(*
m_entry
);
52
53
return
*
this
;
54
}
55
56
std::string
57
Consumer::to_string
()
const
58
{
59
if
(
m_logic
==
nullptr
)
60
return
"(none)"
;
61
62
return
m_entry
->
to_string
();
63
}
64
65
bool
66
Consumer::isUnlimited
()
const
67
{
68
if
(
m_entry
)
69
return
m_entry
->
isUnlimited
();
70
71
return
false
;
72
}
73
74
Disposition
75
Consumer::disposition
()
const
76
{
77
Disposition
d =
ok
;
78
if
(
m_logic
&&
m_entry
)
79
d =
m_logic
->
charge
(*
m_entry
,
Charge
(0));
80
81
return
d;
82
}
83
84
Disposition
85
Consumer::charge
(
Charge
const
& what,
std::string
const
& context)
86
{
87
Disposition
d =
ok
;
88
89
if
(
m_logic
&&
m_entry
&& !
m_entry
->
isUnlimited
())
90
d =
m_logic
->
charge
(*
m_entry
, what, context);
91
92
return
d;
93
}
94
95
bool
96
Consumer::warn
()
97
{
98
XRPL_ASSERT(
m_entry
,
"xrpl::Resource::Consumer::warn : non-null entry"
);
99
return
m_logic
->
warn
(*
m_entry
);
100
}
101
102
bool
103
Consumer::disconnect
(
beast::Journal
const
& j)
104
{
105
XRPL_ASSERT(
m_entry
,
"xrpl::Resource::Consumer::disconnect : non-null entry"
);
106
bool
const
d =
m_logic
->
disconnect
(*
m_entry
);
107
if
(d)
108
{
109
JLOG(j.
debug
()) <<
"disconnecting "
<<
m_entry
->
to_string
();
110
}
111
return
d;
112
}
113
114
int
115
Consumer::balance
()
116
{
117
XRPL_ASSERT(
m_entry
,
"xrpl::Resource::Consumer::balance : non-null entry"
);
118
return
m_logic
->
balance
(*
m_entry
);
119
}
120
121
Entry
&
122
Consumer::entry
()
123
{
124
XRPL_ASSERT(
m_entry
,
"xrpl::Resource::Consumer::entry : non-null entry"
);
125
return
*
m_entry
;
126
}
127
128
void
129
Consumer::setPublicKey
(
PublicKey
const
& publicKey)
130
{
131
m_entry
->
publicKey
= publicKey;
132
}
133
134
std::ostream
&
135
operator<<
(
std::ostream
& os,
Consumer
const
& v)
136
{
137
os << v.
to_string
();
138
return
os;
139
}
140
141
}
// namespace Resource
142
}
// namespace xrpl
std::ostream
std::string
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:41
beast::Journal::debug
Stream debug() const
Definition
Journal.h:301
xrpl::PublicKey
A public key.
Definition
PublicKey.h:43
xrpl::Resource::Charge
A consumption charge.
Definition
Charge.h:11
xrpl::Resource::Consumer
An endpoint that consumes resources.
Definition
Consumer.h:17
xrpl::Resource::Consumer::operator=
Consumer & operator=(Consumer const &other)
Definition
Consumer.cpp:40
xrpl::Resource::Consumer::setPublicKey
void setPublicKey(PublicKey const &publicKey)
Definition
Consumer.cpp:129
xrpl::Resource::Consumer::warn
bool warn()
Returns true if the consumer should be warned.
Definition
Consumer.cpp:96
xrpl::Resource::Consumer::entry
Entry & entry()
Definition
Consumer.cpp:122
xrpl::Resource::Consumer::isUnlimited
bool isUnlimited() const
Returns true if this is a privileged endpoint.
Definition
Consumer.cpp:66
xrpl::Resource::Consumer::Consumer
Consumer()
Definition
Consumer.cpp:20
xrpl::Resource::Consumer::m_entry
Entry * m_entry
Definition
Consumer.h:77
xrpl::Resource::Consumer::disconnect
bool disconnect(beast::Journal const &j)
Returns true if the consumer should be disconnected.
Definition
Consumer.cpp:103
xrpl::Resource::Consumer::m_logic
Logic * m_logic
Definition
Consumer.h:76
xrpl::Resource::Consumer::disposition
Disposition disposition() const
Returns the current disposition of this consumer.
Definition
Consumer.cpp:75
xrpl::Resource::Consumer::to_string
std::string to_string() const
Return a human readable string uniquely identifying this consumer.
Definition
Consumer.cpp:57
xrpl::Resource::Consumer::~Consumer
~Consumer()
Definition
Consumer.cpp:33
xrpl::Resource::Consumer::balance
int balance()
Returns the credit balance representing consumption.
Definition
Consumer.cpp:115
xrpl::Resource::Consumer::charge
Disposition charge(Charge const &fee, std::string const &context={})
Apply a load charge to the consumer.
Definition
Consumer.cpp:85
xrpl::Resource::Logic
Definition
include/xrpl/resource/detail/Logic.h:23
xrpl::Resource::Logic::acquire
void acquire(Entry &entry)
Definition
include/xrpl/resource/detail/Logic.h:382
xrpl::Resource::Logic::warn
bool warn(Entry &entry)
Definition
include/xrpl/resource/detail/Logic.h:449
xrpl::Resource::Logic::balance
int balance(Entry &entry)
Definition
include/xrpl/resource/detail/Logic.h:497
xrpl::Resource::Logic::release
void release(Entry &entry)
Definition
include/xrpl/resource/detail/Logic.h:389
xrpl::Resource::Logic::charge
Disposition charge(Entry &entry, Charge const &fee, std::string context={})
Definition
include/xrpl/resource/detail/Logic.h:421
xrpl::Resource::Logic::disconnect
bool disconnect(Entry &entry)
Definition
include/xrpl/resource/detail/Logic.h:472
xrpl::Resource::Disposition
Disposition
The disposition of a consumer after applying a load charge.
Definition
Disposition.h:8
xrpl::Resource::ok
@ ok
No action required.
Definition
Disposition.h:10
xrpl::Resource::operator<<
std::ostream & operator<<(std::ostream &os, Charge const &v)
Definition
Charge.cpp:36
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:6
ostream
string
xrpl::Resource::Entry
Definition
Entry.h:19
xrpl::Resource::Entry::to_string
std::string to_string() const
Definition
Entry.h:31
xrpl::Resource::Entry::isUnlimited
bool isUnlimited() const
Returns true if this connection should have no resource limits applied–it is still possible for certa...
Definition
Entry.h:42
xrpl::Resource::Entry::publicKey
std::optional< PublicKey > publicKey
Definition
Entry.h:63
Generated by
1.9.8