Dispatcher
Defines C++ functions to dispatch action to proper action handler inside a contract.
Functions
Defines
Functions Documentation
function dispatch
template<typename Contract, typename FirstAction, typename SecondAction, typename... Actions>
bool eosio::dispatch(
uint64_t code,
uint64_t act
)
This method will dynamically dispatch an incoming set of actions to
static Contract::on( ActionType )
For this to work the Actions must be derived from eosio::contract
function execute_action
template<typename T, typename... Args>
bool eosio::execute_action(
name self,
name code,
void(T::*)(Args...) func
)
Unpack the received action and execute the correponding action handler
Template parameters:
- T - The contract class that has the correponding action handler, this contract should be derived from eosio::contract
- Q - The namespace of the action handler function
- Args - The arguments that the action handler accepts, i.e. members of the action
Parameters:
- obj - The contract object that has the correponding action handler
- func - The action handler
Returns:
true
Defines Documentation
define EOSIO_DISPATCH
#define EOSIO_DISPATCH(TYPE, MEMBERS)\
extern "C" { \
[[eosio::wasm_entry]] \
void apply( uint64_t receiver, uint64_t code, uint64_t action ) { \
if( code == receiver ) { \
switch( action ) { \
EOSIO_DISPATCH_HELPER( TYPE, MEMBERS ) \
} \
/* does not allow destructor of thiscontract to run: eosio_exit(0); */ \
} \
} \
} \
Convenient macro to create contract apply handler
Note:
To be able to use this macro, the contract needs to be derived from eosio::contract
Parameters:
- TYPE - The class name of the contract
- MEMBERS - The sequence of available actions supported by this contract
Example:
EOSIO_DISPATCH( eosio::bios, (setpriv)(setalimits)(setglimits)(setprods)(reqauth) )