|
CDT
v4.2.0
инструменты разработчика
|
| #define SEND_INLINE_ACTION | ( | CONTRACT, | |
| NAME, | |||
| ... | |||
| ) | INLINE_ACTION_SENDER(std::decay_t<decltype(CONTRACT)>, NAME)( (CONTRACT).get_self(),__VA_ARGS__) |
Макрос для упрощения вызова встроенных (inline) действий
Отправка встроенного (inline) действия из контракта.
Макрос отправки встроенного действия упрощает вызов встроенных действий. При вызове новых действий из уже выполняемых COOPOS поддерживает две модели обмена: встроенные (inline) и отложенные (deferred). Встроенные действия выполняются как часть текущей транзакции. Этот макрос создаёт Действие с переданными параметрами и автоматически вызывает action.send() для этого действия.
Пример:
Приведённый выше пример взят из контракта токена COOPOS (аналог стандартного токена). В примере: используется переданный разыменованный указатель this для вызова this.get_self(), т.е. контракта токена COOPOS; вызывается действие transfer контракта токена COOPOS; используется разрешение active аккаунта «issuer»; передаются параметры st.issuer, to, quantity и memo. Макрос создаёт структуру действия для вызова send() — вызова transfer(account_name from, account_name to, asset quantity, string memo)
| CONTRACT | — вызываемый контракт, содержащий отправляемое действие; соответствует account |
| NAME | — имя вызываемого действия; соответствует Имя |
| ... | — авторизующее разрешение; соответствует authorization, затем параметры действия; соответствуют data. |
См. определение в файле action.hpp строка 656