P Events

A P program is a collection of state machines communicating with each other by exchanging events. An event in P has two parts: an event name and a payload value (optional) that can be sent along with the event.

P Event Declaration Grammar
eventDecl :          
    | event iden (: type)?;     # P Event Declaration

iden is the name of the event and type is any P data type (described here).

Syntax: event eName; or event eName : payloadType;

eName is the name of the P event and payloadType is the type of payload values that can be sent along with this event.

// declarations of events with no payloads
event ePing;
event ePong;

// declaration of events that have payloads
type tRequest = (client: Client, key: string, value: int, requestId: int);
// eRequest event with payload of type tRequest
event eRequest: tRequest; 
// eResponse event that can have a payload of type (requestId: int, status: bool)
event eResponse: (requestId: int, status: bool);