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.