Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Inter-Event Messaging

Functions for creating, serializing, and managing inter-event messages exchanged between yunos.

Source: kernel/c/root-linux/src/msg_ievent.h


iev_create()

Creates an inter-event object for use within a yuno. Adds the __iev_event__ field to kw.

json_t *iev_create(
    hgobj gobj,
    gobj_event_t event,
    json_t *kw          // like owned, same kw returned
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
eventgobj_event_tEvent to encapsulate.
kwjson_t *Keyword arguments (like owned — same pointer is returned).

Returns

The modified kw with __iev_event__ added, or NULL on error.


iev_create2()

Creates an inter-event object and copies the __temp__ metadata from a request kw.

json_t *iev_create2(
    hgobj gobj,
    gobj_event_t event,
    json_t *kw,           // like owned, same kw returned
    json_t *kw_request    // owned, only __temp__ is extracted
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
eventgobj_event_tEvent to encapsulate.
kwjson_t *Keyword arguments (like owned).
kw_requestjson_t *Request kw from which __temp__ is extracted (owned).

Returns

The modified kw, or NULL on error.


iev_create_to_gbuffer()

Serializes an inter-event message into a gbuffer_t for sending to the outside world.

gbuffer_t *iev_create_to_gbuffer(
    hgobj gobj,
    gobj_event_t event,
    json_t *kw   // owned
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
eventgobj_event_tEvent name.
kwjson_t *Keyword arguments (owned).

Returns

gbuffer_t pointer with the serialized JSON, or NULL on error.


iev_create_from_gbuffer()

Deserializes an inter-event message received from the outside world.

json_t *iev_create_from_gbuffer(
    hgobj gobj,
    gobj_event_t *event,   // output: extracted event name
    gbuffer_t *gbuf,       // owned, data consumed
    int verbose             // 1 = log, 2 = log + dump
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
eventgobj_event_t *Output — receives the extracted event name.
gbufgbuffer_t *Buffer with the serialized message (owned and consumed).
verboseintVerbosity level: 1 = log, 2 = log + dump.

Returns

Deserialized kw JSON object, or NULL on error.


msg_iev_push_stack()

Pushes a record onto an inter-event metadata stack (LIFO). The stack is stored in __md_iev__[stack].

int msg_iev_push_stack(
    hgobj gobj,
    json_t *kw,          // not owned
    const char *stack,
    json_t *jn_data      // owned
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
kwjson_t *Message kw (not owned).
stackconst char *Stack name (e.g. "ievent_gate_stack").
jn_datajson_t *Data to push (owned).

Returns

0 on success, -1 on failure.


msg_iev_get_stack()

Returns the top record of an inter-event stack without popping it.

json_t *msg_iev_get_stack(
    hgobj gobj,
    json_t *kw,          // not owned
    const char *stack,
    BOOL verbose
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
kwjson_t *Message kw (not owned).
stackconst char *Stack name.
verboseBOOLTRUE to log errors when the stack is empty.

Returns

Top record (not owned — do not free), or NULL if not found.


msg_iev_pop_stack()

Pops and returns the top record from an inter-event stack.

json_t *msg_iev_pop_stack(
    hgobj gobj,
    json_t *kw,
    const char *stack
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
kwjson_t *Message kw.
stackconst char *Stack name.

Returns

Popped record (owned — caller must free), or NULL if not found.


msg_iev_set_back_metadata()

Copies inter-event metadata from a request into a response. Optionally reverses src/dst in the ievent_gate_stack.

json_t *msg_iev_set_back_metadata(
    hgobj gobj,
    json_t *kw_request,    // owned (only __md_iev__ extracted)
    json_t *kw_response,   // like owned, returned (created if NULL)
    BOOL reverse_dst
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
kw_requestjson_t *Request kw (owned).
kw_responsejson_t *Response kw (like owned, returned; created if NULL).
reverse_dstBOOLTRUE to swap src/dst in the ievent gate stack.

Returns

The kw_response with metadata set.


msg_iev_build_response()

Builds a complete command/stats response with result code, comment, schema, and data fields. Sets metadata with reversed src/dst.

json_t *msg_iev_build_response(
    hgobj gobj,
    json_int_t result,
    json_t *jn_comment,    // owned
    json_t *jn_schema,     // owned
    json_t *jn_data,       // owned
    json_t *kw_request     // owned
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
resultjson_int_tResult code (0 = success, negative = error).
jn_commentjson_t *Comment string (owned).
jn_schemajson_t *Response schema (owned).
jn_datajson_t *Response data (owned).
kw_requestjson_t *Original request kw (owned).

Returns

Complete response kw ready to send.


msg_iev_build_response_without_reverse_dst()

Same as msg_iev_build_response() but does not reverse src/dst in the metadata.

json_t *msg_iev_build_response_without_reverse_dst(
    hgobj gobj,
    json_int_t result,
    json_t *jn_comment,    // owned
    json_t *jn_schema,     // owned
    json_t *jn_data,       // owned
    json_t *kw_request     // owned
);

Parameters

Same as msg_iev_build_response().

Returns

Complete response kw with metadata set but src/dst not reversed.


msg_iev_clean_metadata()

Removes all inter-event metadata from kw: __md_iev__, __temp__, __md_tranger__, and __md_yuno__.

json_t *msg_iev_clean_metadata(
    json_t *kw   // not owned
);

Parameters

KeyTypeDescription
kwjson_t *Message kw (not owned).

Returns

Same kw with metadata fields removed.


msg_iev_set_msg_type()

Sets the message type in __md_iev__.__msg_type__.

int msg_iev_set_msg_type(
    hgobj gobj,
    json_t *kw,
    const char *msg_type
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
kwjson_t *Message kw.
msg_typeconst char *Message type string (e.g. "__command__", "__stats__", "__message__"). Pass an empty string to delete.

Returns

0 on success.


msg_iev_get_msg_type()

Reads the message type from __md_iev__.__msg_type__.

const char *msg_iev_get_msg_type(
    hgobj gobj,
    json_t *kw
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
kwjson_t *Message kw.

Returns

Message type string, or an empty string if not set.


trace_inter_event()

Traces an inter-event with compact metadata (only result and __md_iev__).

void trace_inter_event(
    hgobj gobj,
    const char *prefix,
    const char *event,
    json_t *kw
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
prefixconst char *Trace message prefix.
eventconst char *Event name.
kwjson_t *Message kw.

Returns

This function does not return a value.


trace_inter_event2()

Traces an inter-event with the full kw content.

void trace_inter_event2(
    hgobj gobj,
    const char *prefix,
    const char *event,
    json_t *kw
);

Parameters

KeyTypeDescription
gobjhgobjGObject instance.
prefixconst char *Trace message prefix.
eventconst char *Event name.
kwjson_t *Full message kw.

Returns

This function does not return a value.