Consider the following example:

The following table shows the calls to use to perform the specified tasks.
| Task | Call |
|---|---|
| Call an operation. | OUT_PORT(src)->f(); |
| Send an event from a to b using the ports. | OUT_PORT(src)->GEN(evt); |
| Listen for an event from port src to port mon. | evt[IS_PORT(mon)]/doYourStuff(); |
You could also use the OPORT macro, which is equivalent to OUT_PORT.