26#ifndef ROUTER_SRC_REST_MRS_SRC_HELPER_PLUGIN_MONITOR_H_ 
   27#define ROUTER_SRC_REST_MRS_SRC_HELPER_PLUGIN_MONITOR_H_ 
   52    observer_id_ = ps_->push_back_observer(observer_);
 
   56    if (PluginState::k_invalid_id_ != observer_id_) {
 
   57      ps_->remove_observer(observer_id_);
 
   67    observer_->wait_for_services_.wait([&
services,
 
   69      if (
nullptr == state) 
return true;
 
   73                             return 0 != state->active_services_.count(name);
 
   81                               state->active_and_stopped_services_.count(name);
 
   89    log_debug(
"wait_for_services ended with '%s'",
 
   90              (
result ? 
"success" : 
"failure"));
 
   96    if (observer_) observer_->reset();
 
  107        const std::vector<std::string> &active_plugins,
 
  108        const std::vector<std::string> &stopped_plugins)
 override {
 
  109      wait_for_services_.serialize_with_cv(
 
  111                                              [[maybe_unused]] 
auto &cv) {
 
  115            for (
auto &
p : active_plugins) {
 
  119            for (
auto &
p : stopped_plugins) {
 
  126                           const std::string &
name)
 override {
 
  128      wait_for_services_.serialize_with_cv(
 
  138                            const std::string &
name)
 override {
 
  140      wait_for_services_.serialize_with_cv(
 
  151      wait_for_services_.serialize_with_cv([](
PluginMonitor *&ptr, 
auto &cv) {
 
Monitor can be waited for.
Definition: monitor.h:62
 
Definition: plugin_monitor.h:102
 
WaitableMonitor< PluginMonitor * > wait_for_services_
Definition: plugin_monitor.h:157
 
ServiceObserver(PluginMonitor *parent)
Definition: plugin_monitor.h:104
 
void on_plugin_shutdown(const PluginState *state, const std::string &name) override
Definition: plugin_monitor.h:137
 
void on_begin_observation(const std::vector< std::string > &active_plugins, const std::vector< std::string > &stopped_plugins) override
Definition: plugin_monitor.h:106
 
void reset()
Definition: plugin_monitor.h:150
 
void on_plugin_startup(const PluginState *state, const std::string &name) override
Definition: plugin_monitor.h:125
 
Definition: plugin_monitor.h:43
 
std::shared_ptr< ServiceObserver > observer_
Definition: plugin_monitor.h:162
 
~PluginMonitor()
Definition: plugin_monitor.h:55
 
Services active_services_
Definition: plugin_monitor.h:163
 
void abort()
Definition: plugin_monitor.h:95
 
std::string ServiceName
Definition: plugin_monitor.h:45
 
Services get_active_services()
Definition: plugin_monitor.h:99
 
bool wait_for_services(const Services &services)
Definition: plugin_monitor.h:63
 
std::set< ServiceName > Services
Definition: plugin_monitor.h:46
 
Services active_and_stopped_services_
Definition: plugin_monitor.h:164
 
PluginState * ps_
Definition: plugin_monitor.h:160
 
PluginMonitor(PluginState *ps=PluginState::get_instance())
Definition: plugin_monitor.h:50
 
Definition: plugin_state_observer.h:36
 
Definition: plugin_state.h:41
 
uint32_t ObserverId
Definition: plugin_state.h:45
 
Log log_debug(std::cout, "DEBUG")
 
const char * p
Definition: ctype-mb.cc:1227
 
Logging interface for using and extending the logging subsystem.
 
#define IMPORT_LOG_FUNCTIONS()
convenience macro to avoid common boilerplate
Definition: logging.h:331
 
std::string to_string(const std::pair< PairFirst, PairSecond > &pair)
Definition: to_string.h:46
 
Definition: services.cc:40
 
struct result result
Definition: result.h:34
 
case opt name
Definition: sslopt-case.h:29