Rather than calling stopped() directly from emergency_stop(), wait for
the transition cycle.
}
forced_stop();
stop_dependents();
- stopped();
}
void base_process_service::becoming_inactive() noexcept
#include "service.h"
+// This header defines base_proc_service (base process service) and several derivatives, as well as some
+// utility functions and classes. See service.h for full details of services.
+
// Given a string and a list of pairs of (start,end) indices for each argument in that string,
// store a null terminator for the argument. Return a `char *` vector containing the beginning
// of each argument and a trailing nullptr. (The returned array is invalidated if the string is later modified).
// Called on transition of desired state from stopped to started (or unpinned stop)
void do_start() noexcept;
- // Called on transition of desired state from started to stopped (or unpinned start)
+ // Begin stopping, release activation.
void do_stop() noexcept;
// Set the service state
}
}
-
void service_record::started() noexcept
{
// If we start on console but don't keep it, release it now:
{
if (service_state != service_state_t::STOPPED) {
force_stop = true;
- services->add_transition_queue(this);
+ if (! pinned_started) {
+ prop_stop = true;
+ services->add_transition_queue(this);
+ }
}
}