Dispatcher

Functions

Functions Documentation

function dispatch

template<typename Contract, typename FirstAction, typename SecondAction, typename... Actions>
bool arisen::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 arisen::contract

function execute_action

template<typename T, typename... Args>
bool arisen::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 arisen::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 ARISEN_DISPATCH(TYPE, MEMBERS)\
extern "C" { \
   [[arisen::wasm_entry]] \
   void apply( uint64_t receiver, uint64_t code, uint64_t action ) { \
      if( code == receiver ) { \
         switch( action ) { \
            ARISEN_DISPATCH_HELPER( TYPE, MEMBERS ) \
         } \
         /* does not allow destructor of thiscontract to run: arisen_exit(0); */ \
      } \
   } \
} \

Convenient macro to create contract apply handle

Note:

To be able to use this macro, the contract needs to be derived from arisen::contract

Parameters:

TYPE - The class name of the contract
MEMBERS - The sequence of available actions supported by this contract
Example:

ARISEN_DISPATCH( arisen::bios, (setpriv)(setalimits)(setglimits)(setprods)(reqauth) )