| 1 task |
driver to head, head to worker |
the encoded argument |
| 2 result |
worker to head, head to driver |
the encoded result |
| 3 error |
worker to head, head to driver |
a UTF-8 message |
| 4 hello |
driver, worker or observer to head |
role byte (ROLE_*), the registry hash u64 (an observer's is ignored); a worker adds its object server's address |
| 5 welcome |
head to driver |
the driver's number, u64 |
| 6 task-after |
driver to head |
flags byte (GATHER, WITH_VALUE), count u64, then that many object IDs; with WITH_VALUE, a length u64 and the encoded value |
| 7 stored |
worker to head |
the result's size, u64: it stayed on the worker |
| 8 located |
head to driver |
the address of the worker holding the result |
| 9 fetch |
driver or worker to a worker |
none: send that object back as a result frame |
| 10 task-inputs |
head to worker |
flags byte, count u64, then per input a tag byte, its object ID, then for tag 0 a length u64 and the bytes, or for tag 1 its location; with WITH_VALUE, a length u64 and the value |
| 11 release |
driver to head |
none: the driver is done with this object |
| 12 free |
head to worker |
none: delete this object |
| 13 stats |
driver to head, head to driver |
none; the reply is five u64 counts (see HeadStats) |
| 14 holding |
worker to head, on rejoining |
count u64, then per object its ID u64 and its location |
| 15 claim |
driver to head, on resuming |
none: this driver still holds this object, which lives on a worker |
| 16 resumed |
driver to head |
none: this driver has restored, claimed or resubmitted everything |
| 17 span |
worker to head, before the result |
three u64 wall-clock nanoseconds: when the task arrived, started and ended |
| 18 timeline |
driver to head, head to driver |
none; the reply is a count u64, then per finished task its object ID, task ID, the four head stamps (submitted, queued, dispatched, settled), the three worker stamps, and the worker's address |
| 19 actor-create |
driver to head, head to worker |
from the driver, checkpoint_every u64 first; then the encoded constructor argument. The object ID names the actor, the task ID its type |
| 20 actor-call |
driver to head, head to worker |
the actor's ID u64, then the encoded argument; the task ID is the method's |
| 21 actor-kill |
driver to head, head to worker |
none: destroy the actor the object ID names |
| 22 checkpoint |
driver to head, head to worker |
from the driver, the actor's ID u64, and the object ID is the checkpoint's own; from the head, the calls covered by the checkpoint it would restore from, i64 (-1 for none), the object ID names the actor and the task ID is the number of calls the new one covers |
| 23 checkpointed |
worker to head |
none if the checkpoint is written, else why not; the object and task IDs are the checkpoint frame's |
| 24 actor-restore |
head to worker |
the number of calls the checkpoint covers, u64; the object ID names the actor, the task ID its type |
| 25 covered |
head to driver |
the newest of this driver's calls to the actor a checkpoint now includes, u64; the object ID names the actor |
| 26 status |
observer to head, head to observer |
none; the reply is the head's state as UTF-8 text |
| 27 stop |
observer to head, head to worker |
none: shut down; a worker exits instead of rejoining |
| 28 task-many |
driver to head, head to worker |
the number of results u64, then the encoded argument; the results are this object ID and the ones after it |
| 29 drain |
worker to head |
none: the worker was told to stop; it takes no more work, and leaves once the head says stop |
| 30 adopt |
head to worker |
a draining worker's location of the object: fetch it and keep it |
| 31 adopted |
worker to head |
1 and the object's new location, or 0 and why not |