rippled
Loading...
Searching...
No Matches
Permissions.h
1#ifndef XRPL_PROTOCOL_PERMISSION_H_INCLUDED
2#define XRPL_PROTOCOL_PERMISSION_H_INCLUDED
3
4#include <xrpl/protocol/Rules.h>
5#include <xrpl/protocol/TER.h>
6#include <xrpl/protocol/TxFormats.h>
7
8#include <optional>
9#include <string>
10#include <unordered_map>
11
12namespace xrpl {
21#pragma push_macro("PERMISSION")
22#undef PERMISSION
23
24#define PERMISSION(type, txType, value) type = value,
25
26#include <xrpl/protocol/detail/permissions.macro>
27
28#undef PERMISSION
29#pragma pop_macro("PERMISSION")
30};
31
33
35{
36private:
37 Permission();
38
40
42
45
47
49
50public:
51 static Permission const&
53
54 Permission(Permission const&) = delete;
56 operator=(Permission const&) = delete;
57
59 getPermissionName(std::uint32_t const value) const;
60
62 getGranularValue(std::string const& name) const;
63
65 getGranularName(GranularPermissionType const& value) const;
66
68 getGranularTxType(GranularPermissionType const& gpType) const;
69
71 getTxFeature(TxType txType) const;
72
73 bool
74 isDelegable(std::uint32_t const& permissionValue, Rules const& rules) const;
75
76 // for tx level permission, permission value is equal to tx type plus one
77 uint32_t
78 txToPermissionType(TxType const& type) const;
79
80 // tx type value is permission value minus one
81 TxType
82 permissionToTxType(uint32_t const& value) const;
83};
84
85} // namespace xrpl
86
87#endif
std::optional< std::string > getGranularName(GranularPermissionType const &value) const
std::unordered_map< std::uint16_t, Delegation > delegableTx_
Definition Permissions.h:41
std::optional< std::uint32_t > getGranularValue(std::string const &name) const
TxType permissionToTxType(uint32_t const &value) const
std::optional< TxType > getGranularTxType(GranularPermissionType const &gpType) const
std::optional< std::string > getPermissionName(std::uint32_t const value) const
uint32_t txToPermissionType(TxType const &type) const
bool isDelegable(std::uint32_t const &permissionValue, Rules const &rules) const
std::optional< std::reference_wrapper< uint256 const > > const getTxFeature(TxType txType) const
std::unordered_map< GranularPermissionType, std::string > granularNameMap_
Definition Permissions.h:46
Permission(Permission const &)=delete
std::unordered_map< std::uint16_t, uint256 > txFeatureMap_
Definition Permissions.h:39
Permission & operator=(Permission const &)=delete
std::unordered_map< std::string, GranularPermissionType > granularPermissionMap_
Definition Permissions.h:44
std::unordered_map< GranularPermissionType, TxType > granularTxTypeMap_
Definition Permissions.h:48
static Permission const & getInstance()
Rules controlling protocol behavior.
Definition Rules.h:19
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
TxType
Transaction type identifiers.
Definition TxFormats.h:38
GranularPermissionType
We have both transaction type permissions and granular type permissions.
Definition Permissions.h:20
@ notDelegable
Definition Permissions.h:32
@ delegable
Definition Permissions.h:32