Expand description
Messaging API for Gear programs.
This module contains an API to process incoming messages and send outgoing ones. Messages are the primary communication interface between actors (users and programs).
Every Gear program has code that handles messages. During message processing, a program can send messages to other programs and users, including a reply to the initial message.
When some actor (user or program) sends a message to the program, it invokes
this program by executing the handle function. The invoked program can
obtain details of incoming messages by using this module’s API (source,
size, load, id, value, etc.).
Optionally the program can send one or more messages to other actors. Also, it can send a reply that differs from a regular message in two ways:
- There can be no more than one reply;
- It is impossible to choose the reply’s destination, as it is always sent to the program invoker.
Note that messages and a reply are not sent immediately but collected during the program execution and enqueued after the execution successfully ends.
Structs§
- Codec
Create Program Future - Same as
CreateProgramFuture, but allows decoding the reply’s payload instead of receiving a byte vector. - Codec
Message Future - Same as
MessageFuture, but allows decoding the reply’s payload instead of getting a byte vector. - Create
Program Future - Async functions that relate to creating programs wait for a reply from the
program’s init function. These functions have the suffix
_for_reply, such ascrate::prog::create_program_bytes_for_reply. - Message
Future - Future returned by async functions related to message sending that wait for
a reply (see sending functions with
_for_replysuffix, e.g.send_bytes_for_reply). - Message
Handle - Message handle.
Functions§
- id
- Get an identifier of the message that is currently being processed.
- load
- Get a payload of the message that is currently being processed.
- load_
bytes - Get a payload of the message that is currently being processed.
- reply
- Send a new message as a reply to the message being processed.
- reply_
bytes - Send a new message as a reply to the message that is currently being processed.
- reply_
bytes_ from_ reservation - Same as
reply_bytes, but it spends gas from a reservation instead of borrowing it from the gas limit provided with the incoming message. - reply_
bytes_ with_ gas - Same as
reply_bytes, but with an explicit gas limit. - reply_
code - Get the reply code of the message being processed.
- reply_
commit - Finalize and send the current reply message.
- reply_
commit_ from_ reservation - Same as
reply_commit, but it spends gas from a reservation instead of borrowing it from the gas limit provided with the incoming message. - reply_
commit_ with_ gas - Same as
reply_commit, but with an explicit gas limit. - reply_
from_ reservation - Same as
reply, but it spends gas from a reservation instead of borrowing gas from the gas limit provided with the incoming message. - reply_
input - Same as
replybut uses the input buffer as a payload source. - reply_
input_ with_ gas - Same as
reply_input, but with an explicit gas limit. - reply_
push - Push a payload part to the current reply message.
- reply_
push_ input - Same as
reply_pushbut uses the input buffer as a payload source. - reply_
to - Get an identifier of the initial message on which the current
handle_replyfunction is called. - reply_
with_ gas - Same as
reply, but with an explicit gas limit. - send
- Send a new message to the program or user.
- send_
bytes - Send a new message to the program or user.
- send_
bytes_ delayed - Same as
send_bytes, but sends the message after thedelayexpressed in block count. - send_
bytes_ delayed_ from_ reservation - Same as
send_bytes_from_reservation, but sends the message after thedelayexpressed in block count. - send_
bytes_ for_ reply - Same as
send_bytes, but the program will interrupt until the reply is received. - send_
bytes_ for_ reply_ as - Same as
send_bytes, but the program will interrupt until the reply is received. - send_
bytes_ from_ reservation - Same as
send_bytes, but it spends gas from a reservation instead of borrowing it from the gas limit provided with the incoming message. - send_
bytes_ from_ reservation_ for_ reply - Same as
send_bytes_from_reservation, but the program will interrupt until the reply is received. - send_
bytes_ from_ reservation_ for_ reply_ as - Same as
send_bytes_from_reservation, but the program will interrupt until the reply is received. - send_
bytes_ with_ gas - Same as
send_bytes, but with an explicit gas limit. - send_
bytes_ with_ gas_ delayed - Same as
send_bytes_with_gas, but sends the message after thedelayexpressed in block count. - send_
bytes_ with_ gas_ for_ reply - Same as
send_bytes_with_gas, but the program will interrupt until the reply is received. - send_
bytes_ with_ gas_ for_ reply_ as - Same as
send_bytes_with_gas, but the program will interrupt until the reply is received. - send_
delayed - Same as
send, but sends the message after thedelayexpressed in block count. - send_
delayed_ from_ reservation - Same as
send_from_reservation, but sends the message after thedelayexpressed in block count. - send_
for_ reply - Same as
send, but the program will interrupt until the reply is received. - send_
for_ reply_ as - Same as
send, but the program will interrupt until the reply is received. - send_
from_ reservation - Same as
send, but it spends gas from a reservation instead of borrowing it from the gas limit provided with the incoming message. - send_
from_ reservation_ for_ reply - Same as
send_from_reservation, but the program will interrupt until the reply is received. - send_
from_ reservation_ for_ reply_ as - Same as
send_from_reservation, but the program will interrupt until the reply is received. - send_
input - Same as
sendbut uses the input buffer as a payload source. - send_
input_ delayed - Same as
send_input, but sends the message after thedelayexpressed in block count. - send_
input_ for_ reply - Same as
send_input, but the program will interrupt until the reply is received. - send_
input_ for_ reply_ as - Same as
send_input, but the program will interrupt until the reply is received. - send_
input_ with_ gas - Same as
send_input, but with an explicit gas limit. - send_
input_ with_ gas_ delayed - Same as
send_input_with_gas, but sends the message after thedelayexpressed in block count. - send_
input_ with_ gas_ for_ reply - Same as
send_input_with_gas, but the program will interrupt until the reply is received. - send_
input_ with_ gas_ for_ reply_ as - Same as
send_input_with_gas, but the program will interrupt until the reply is received. - send_
with_ gas - Same as
send, but with an explicit gas limit. - send_
with_ gas_ delayed - Same as
send_with_gas, but sends the message after thedelayexpressed in block count. - send_
with_ gas_ for_ reply - Same as
send_with_gas, but the program will interrupt until the reply is received. - send_
with_ gas_ for_ reply_ as - Same as
send_with_gas, but the program will interrupt until the reply is received. - signal_
code - Get the reply code of the message being processed.
- signal_
from - Get an identifier of the message which issued a signal.
- size
- Get the payload size of the message that is being processed.
- source
- Get the identifier of the message source (256-bit address).
- value
- Get the value associated with the message that is being processed.
- with_
read_ on_ stack_ or_ heap - Executes function
fwith provided message payload allocated on stack. If payload size is bigger than stack_buffer::MAX_BUFFER_SIZE, then allocation will be on heap.