Pausing
The SimClockExecutor can be completely paused (all callbacks and timers will be paused). This allows you to look over data in a deterministic fashion. You can pause/resume the pipeline as many times are you like without impacting the determinism of the pipeline.
Because pausing a pipeline pauses all callbacks, you must pause/resume the pipeline through external
interfaces. Specifically, the ark::pipeline::StageInterface
has a method that allows you to retrieve
a callback to pause/resume the pipeline:
auto runtime_control_function = interface.executor_runtime_control_function();
runtime_control_function(ark::pipeline::ExecutorRuntimeControlState::Paused);
The HTTP Server Stage also provides an interface to pause/unpause a pipeline. You can write to the
/executor/runtime_control
channel, like so:
echo '{"new_state": "Paused"}' | ./build/ark-put -c /executor/runtime_control
echo '{"new_state": "Active"}' | ./build/ark-put -c /executor/runtime_control
This will allow you to pause/resume a pipeline from a command line.