Executors can now decide whether or not a downloaded payload should be kept in memory or written to disk. For most executors, payloads will always be written to disk. The donut executor will request .donut payloads to be stored in memory.
The donut executor no longer implements the contact interface, since it no longer needs to request its own payloads.
The logic flow for downloading payloads for instructions is now the following:
agent checks what payloads are required, as well as the executor to use
for each payload, the executor returns a boolean that determines if the payload should stay in memory or get written to disk
The agent downloads each payload and passes the payload information to the executor (filepaths for payloads written to
disk, as well as payload bytes for payloads stored in memory)
The executor uses the downloaded/in-memory payloads to run the command accordingly.
Executors can now decide whether or not a downloaded payload should be kept in memory or written to disk. For most executors, payloads will always be written to disk. The donut executor will request .donut payloads to be stored in memory. The donut executor no longer implements the contact interface, since it no longer needs to request its own payloads.
The logic flow for downloading payloads for instructions is now the following: