Files
rippled/include/xrpl/resource/Consumer.h
Bart 1d42c4f6de refactor: Remove unnecessary copyright notices already covered by LICENSE.md (#5929)
Per XLS-0095, we are taking steps to rename ripple(d) to xrpl(d).

This change specifically removes all copyright notices referencing Ripple, XRPLF, and certain affiliated contributors upon mutual agreement, so the notice in the LICENSE.md file applies throughout. Copyright notices referencing external contributions remain as-is. Duplicate verbiage is also removed.
2025-11-04 08:33:42 +00:00

87 lines
1.9 KiB
C++

#ifndef XRPL_RESOURCE_CONSUMER_H_INCLUDED
#define XRPL_RESOURCE_CONSUMER_H_INCLUDED
#include <xrpl/basics/Log.h>
#include <xrpl/protocol/PublicKey.h>
#include <xrpl/resource/Charge.h>
#include <xrpl/resource/Disposition.h>
namespace ripple {
namespace Resource {
struct Entry;
class Logic;
/** An endpoint that consumes resources. */
class Consumer
{
private:
friend class Logic;
Consumer(Logic& logic, Entry& entry);
public:
Consumer();
~Consumer();
Consumer(Consumer const& other);
Consumer&
operator=(Consumer const& other);
/** Return a human readable string uniquely identifying this consumer. */
std::string
to_string() const;
/** Returns `true` if this is a privileged endpoint. */
bool
isUnlimited() const;
/** Raise the Consumer's privilege level to a Named endpoint.
The reference to the original endpoint descriptor is released.
*/
void
elevate(std::string const& name);
/** Returns the current disposition of this consumer.
This should be checked upon creation to determine if the consumer
should be disconnected immediately.
*/
Disposition
disposition() const;
/** Apply a load charge to the consumer. */
Disposition
charge(Charge const& fee, std::string const& context = {});
/** Returns `true` if the consumer should be warned.
This consumes the warning.
*/
bool
warn();
/** Returns `true` if the consumer should be disconnected. */
bool
disconnect(beast::Journal const& j);
/** Returns the credit balance representing consumption. */
int
balance();
// Private: Retrieve the entry associated with the consumer
Entry&
entry();
void
setPublicKey(PublicKey const& publicKey);
private:
Logic* m_logic;
Entry* m_entry;
};
std::ostream&
operator<<(std::ostream& os, Consumer const& v);
} // namespace Resource
} // namespace ripple
#endif