Messaging

Last updated on 29th April 2024

In order for vertices to interact, they must pass messages to each other, and handle the messages sent to them by other vertices. At the core-graph level, this handling of incoming messages and the subsequent reactions is the only ordering mechanism available.

Phases

Messaging proceeds in phases, with each vertex acting in parallel within a phase. The precise ordering within a phase is undefined, but also unobservable, as vertices cannot interact directly.

Any vertex which has received messages, has the opportunity to act on those messages. This could be any combination of sending messages (either in response or to other agents), updating internal state, updating links, contributing to accumulators, etc.

In each phase, each Vertex receives every message sent to it in the previous phase. These messages are received as a list, the order of which is undefined. It is left as a higher level consideration on whether messages should be dealt with in a specific order, as defined by the exact requirements of the logic to be implemented.

Phases continue until no messages are sent within a phase, or the builtin phase limit is reached (default 50).