Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
kcenon::common::di::unified_bootstrapper Class Reference

Coordinates system initialization and shutdown. More...

#include <unified_bootstrapper.h>

Collaboration diagram for kcenon::common::di::unified_bootstrapper:
Collaboration graph

Classes

struct  module_entry
 
struct  shutdown_hook_entry
 

Public Member Functions

 unified_bootstrapper ()=delete
 
 ~unified_bootstrapper ()=delete
 
 unified_bootstrapper (const unified_bootstrapper &)=delete
 
unified_bootstrapperoperator= (const unified_bootstrapper &)=delete
 

Static Public Member Functions

static VoidResult initialize (const bootstrapper_options &opts={})
 Initialize the unified system.
 
static VoidResult shutdown (std::chrono::milliseconds timeout=std::chrono::seconds(30))
 Shutdown the unified system gracefully.
 
static service_containerservices ()
 Get the service container.
 
static bool is_initialized ()
 Check if the system is initialized.
 
static bool is_shutdown_requested ()
 Check if shutdown has been requested.
 
static VoidResult register_shutdown_hook (const std::string &name, shutdown_hook hook)
 Register a shutdown hook.
 
static VoidResult unregister_shutdown_hook (const std::string &name)
 Unregister a shutdown hook.
 
static void request_shutdown (bool trigger_shutdown=false)
 Request graceful shutdown.
 
static bootstrapper_options get_options ()
 Get the initialization options.
 
static VoidResult register_module (const std::string &name, module_registration_fn fn)
 Register a module's service registration function.
 
template<typename M >
requires concepts::ModuleRegistrar<M>
static VoidResult register_module (M registrar)
 Register a class-based module registrar.
 
static VoidResult unregister_module (const std::string &name)
 Unregister a module.
 
static std::vector< std::string > registered_modules ()
 Get list of registered module names.
 
static bool is_module_registered (const std::string &name)
 Check if a module is registered.
 

Static Private Member Functions

static VoidResult register_core_services ()
 Register core services that are always required.
 
static VoidResult register_optional_services (const bootstrapper_options &opts)
 Register optional services based on options.
 
static void setup_default_shutdown_hooks ()
 Set up default shutdown hooks.
 
static void setup_signal_handlers ()
 Set up signal handlers.
 
static void signal_handler (int signal)
 Signal handler function.
 
static void execute_shutdown_hooks (std::chrono::milliseconds timeout)
 Execute all shutdown hooks.
 

Static Private Attributes

static std::atomic< bool > initialized_ {false}
 
static std::atomic< bool > shutdown_requested_ {false}
 
static std::mutex mutex_
 
static bootstrapper_options options_
 
static std::vector< shutdown_hook_entryshutdown_hooks_
 
static std::vector< module_entrymodules_
 

Detailed Description

Coordinates system initialization and shutdown.

The unified bootstrapper provides a single entry point for initializing all system components. It manages:

  • Service registration order
  • Dependency resolution
  • Graceful shutdown with timeout
  • Signal handler registration

Usage Example:

int main() {
// Initialize with options
.enable_logging = true,
.enable_monitoring = true,
.config_path = "config.yaml"
});
if (result.is_err()) {
std::cerr << "Initialization failed: " << result.error().message << "\n";
return 1;
}
// Get services
// Application logic...
// Shutdown (or wait for signal)
return 0;
}
int main()
Result< std::shared_ptr< TInterface > > resolve()
Resolve a service by its interface type.
static service_container & services()
Get the service container.
static VoidResult shutdown(std::chrono::milliseconds timeout=std::chrono::seconds(30))
Shutdown the unified system gracefully.
static VoidResult initialize(const bootstrapper_options &opts={})
Initialize the unified system.
Standard interface for logging implementations.
Definition logger.cppm:95

Definition at line 130 of file unified_bootstrapper.h.

Constructor & Destructor Documentation

◆ unified_bootstrapper() [1/2]

kcenon::common::di::unified_bootstrapper::unified_bootstrapper ( )
delete

◆ ~unified_bootstrapper()

kcenon::common::di::unified_bootstrapper::~unified_bootstrapper ( )
delete

◆ unified_bootstrapper() [2/2]

kcenon::common::di::unified_bootstrapper::unified_bootstrapper ( const unified_bootstrapper & )
delete

Member Function Documentation

◆ execute_shutdown_hooks()

void kcenon::common::di::unified_bootstrapper::execute_shutdown_hooks ( std::chrono::milliseconds timeout)
inlinestaticprivate

Execute all shutdown hooks.

Definition at line 743 of file unified_bootstrapper.h.

744 {
745
746 auto start = std::chrono::steady_clock::now();
747
748 // Execute hooks in reverse order (LIFO)
749 for (auto it = shutdown_hooks_.rbegin(); it != shutdown_hooks_.rend(); ++it) {
750 auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
751 std::chrono::steady_clock::now() - start);
752 auto remaining = timeout - elapsed;
753
754 if (remaining <= std::chrono::milliseconds::zero()) {
755 // Timeout reached, skip remaining hooks
756 break;
757 }
758
759 try {
760 it->hook(remaining);
761 } catch (...) {
762 // Ignore exceptions during shutdown
763 }
764 }
765}
static std::vector< shutdown_hook_entry > shutdown_hooks_

References shutdown_hooks_.

Referenced by shutdown().

Here is the caller graph for this function:

◆ get_options()

bootstrapper_options kcenon::common::di::unified_bootstrapper::get_options ( )
inlinestatic

Get the initialization options.

Returns
Current bootstrapper options (empty if not initialized)

Definition at line 533 of file unified_bootstrapper.h.

533 {
534 std::lock_guard<std::mutex> lock(mutex_);
535 return options_;
536}

References mutex_, and options_.

◆ initialize()

VoidResult kcenon::common::di::unified_bootstrapper::initialize ( const bootstrapper_options & opts = {})
inlinestatic

Initialize the unified system.

Performs the following steps:

  1. Registers core services (always required)
  2. Registers optional services based on options
  3. Sets up shutdown hooks
  4. Registers signal handlers (if enabled)

This method is idempotent - calling it multiple times after successful initialization returns success without re-initializing.

Parameters
optsConfiguration options
Returns
VoidResult indicating success or initialization error

Possible errors:

  • ALREADY_EXISTS: Already initialized with different options
  • INTERNAL_ERROR: Service registration failed

Definition at line 380 of file unified_bootstrapper.h.

380 {
381 std::lock_guard<std::mutex> lock(mutex_);
382
383 // Check if already initialized
384 if (initialized_.load()) {
385 return VoidResult::ok({});
386 }
387
388 // Store options
389 options_ = opts;
390
391 // Register core services
392 auto core_result = register_core_services();
393 if (core_result.is_err()) {
394 return core_result;
395 }
396
397 // Register optional services
398 auto optional_result = register_optional_services(opts);
399 if (optional_result.is_err()) {
400 // Cleanup on failure
402 // Reset module registration flags so they can be retried
403 for (auto& module : modules_) {
404 module.services_registered = false;
405 }
406 return optional_result;
407 }
408
409 // Set up default shutdown hooks
411
412 // Set up signal handlers
413 if (opts.register_signal_handlers) {
415 }
416
417 // Mark as initialized
418 initialized_.store(true);
419 shutdown_requested_.store(false);
420
421 return VoidResult::ok({});
422}
static Result< T > ok(U &&value)
Create a successful result with value (static factory)
Definition core.h:223
static service_container & global()
Get the global service container instance.
VoidResult clear() override
Clear all registrations.
static void setup_signal_handlers()
Set up signal handlers.
static std::vector< module_entry > modules_
static VoidResult register_core_services()
Register core services that are always required.
static VoidResult register_optional_services(const bootstrapper_options &opts)
Register optional services based on options.
static void setup_default_shutdown_hooks()
Set up default shutdown hooks.

References kcenon::common::di::service_container::clear(), kcenon::common::di::service_container::global(), initialized_, modules_, mutex_, kcenon::common::Result< T >::ok(), options_, register_core_services(), register_optional_services(), kcenon::common::di::bootstrapper_options::register_signal_handlers, setup_default_shutdown_hooks(), setup_signal_handlers(), and shutdown_requested_.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_initialized()

bool kcenon::common::di::unified_bootstrapper::is_initialized ( )
inlinestatic

Check if the system is initialized.

Thread-safe check of initialization state.

Returns
true if initialized, false otherwise

Definition at line 466 of file unified_bootstrapper.h.

466 {
467 return initialized_.load();
468}

References initialized_.

◆ is_module_registered()

bool kcenon::common::di::unified_bootstrapper::is_module_registered ( const std::string & name)
inlinestatic

Check if a module is registered.

Parameters
nameModule name to check
Returns
true if the module is registered

Definition at line 617 of file unified_bootstrapper.h.

617 {
618 std::lock_guard<std::mutex> lock(mutex_);
619
620 return std::find_if(modules_.begin(), modules_.end(),
621 [&name](const module_entry& entry) {
622 return entry.name == name;
623 }) != modules_.end();
624}

References modules_, and mutex_.

◆ is_shutdown_requested()

bool kcenon::common::di::unified_bootstrapper::is_shutdown_requested ( )
inlinestatic

Check if shutdown has been requested.

Thread-safe check of shutdown state. Useful for long-running operations to check if they should abort.

Returns
true if shutdown requested, false otherwise

Definition at line 470 of file unified_bootstrapper.h.

470 {
471 return shutdown_requested_.load();
472}

References shutdown_requested_.

◆ operator=()

unified_bootstrapper & kcenon::common::di::unified_bootstrapper::operator= ( const unified_bootstrapper & )
delete

◆ register_core_services()

VoidResult kcenon::common::di::unified_bootstrapper::register_core_services ( )
inlinestaticprivate

Register core services that are always required.

Definition at line 626 of file unified_bootstrapper.h.

626 {
627 // Core services are minimal and always registered
628 // The service_container itself is already available via services()
629 // No additional core services are required at this time
630 //
631 // Future core services that might be registered here:
632 // - Default error handlers
633 // - Core diagnostics
634 // - System-level configuration providers
635 //
636 // For now, just ensure the container is initialized
637 // Subsystems register their own services via their adapter modules
638
639 return VoidResult::ok({});
640}

References kcenon::common::Result< T >::ok().

Referenced by initialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ register_module() [1/2]

VoidResult kcenon::common::di::unified_bootstrapper::register_module ( const std::string & name,
module_registration_fn fn )
inlinestatic

Register a module's service registration function.

Modules can be registered before or after initialization:

  • Before initialize(): stored and called during initialization
  • After initialize(): called immediately with the service container
Parameters
nameUnique module name (e.g., "logger", "monitoring")
fnRegistration function that registers services with the container
Returns
VoidResult indicating success or error

Possible errors:

  • ALREADY_EXISTS: Module with this name already registered

Definition at line 542 of file unified_bootstrapper.h.

544 {
545
546 std::lock_guard<std::mutex> lock(mutex_);
547
548 // Check for duplicate
549 for (const auto& entry : modules_) {
550 if (entry.name == name) {
553 "Module already registered: " + name,
554 "di::unified_bootstrapper"
555 );
556 }
557 }
558
559 // If already initialized, register services immediately
560 if (initialized_.load()) {
561 auto& container = service_container::global();
562 auto result = fn(container);
563 if (!result.is_ok()) {
564 return result;
565 }
566 modules_.push_back({name, std::move(fn), true});
567 } else {
568 // Store for deferred registration during initialize()
569 modules_.push_back({name, std::move(fn), false});
570 }
571
572 return VoidResult::ok({});
573}
constexpr int ALREADY_EXISTS
Definition compat.h:37
Result< T > make_error(int code, const std::string &message, const std::string &module="")
Create an error result with code and message.
Definition utilities.h:91

References kcenon::common::error_codes::ALREADY_EXISTS, kcenon::common::di::service_container::global(), initialized_, kcenon::common::make_error(), modules_, mutex_, and kcenon::common::Result< T >::ok().

Referenced by register_module().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ register_module() [2/2]

template<typename M >
requires concepts::ModuleRegistrar<M>
VoidResult kcenon::common::di::unified_bootstrapper::register_module ( M registrar)
static

Register a class-based module registrar.

Convenience overload that accepts any type satisfying the ModuleRegistrar concept.

Template Parameters
MType satisfying concepts::ModuleRegistrar
Parameters
registrarModule registrar instance
Returns
VoidResult indicating success or error
See also
concepts::ModuleRegistrar

Definition at line 577 of file unified_bootstrapper.h.

577 {
578 return register_module(
579 std::string(M::module_name()),
580 [r = std::move(registrar)](IServiceContainer& container) mutable {
581 return r.register_services(container);
582 }
583 );
584}
static VoidResult register_module(const std::string &name, module_registration_fn fn)
Register a module's service registration function.

References register_module().

Here is the call graph for this function:

◆ register_optional_services()

VoidResult kcenon::common::di::unified_bootstrapper::register_optional_services ( const bootstrapper_options & opts)
inlinestaticprivate

Register optional services based on options.

Definition at line 642 of file unified_bootstrapper.h.

643 {
644
645 // Optional services are registered based on configuration
646 // Each subsystem provides registration functions via adapters
647 // The registration is conditional based on:
648 // 1. bootstrapper_options flags (enable_logging, etc.)
649 // 2. Feature detection macros (KCENON_WITH_*_SYSTEM)
650 // 3. Dynamically registered modules via register_module()
651
652 auto& container = service_container::global();
653
654 // --- Compile-time subsystem integration (legacy) ---
655
656 // Logging services
657 if (opts.enable_logging) {
658#if KCENON_WITH_LOGGER_SYSTEM
659 // When logger_system is available and registered via register_module(),
660 // it will be handled below. The #ifdef path is kept for backward
661 // compatibility until all subsystems migrate to register_module().
662#endif
663 }
664
665 // Monitoring services
666 if (opts.enable_monitoring) {
667#if KCENON_WITH_MONITORING_SYSTEM
668 // Same as above - handled by register_module() when available.
669#endif
670 }
671
672 // Database services
673 if (opts.enable_database) {
674#if KCENON_WITH_DATABASE_SYSTEM
675 // Same as above - handled by register_module() when available.
676#endif
677 }
678
679 // Network services
680 if (opts.enable_network) {
681#if KCENON_WITH_NETWORK_SYSTEM
682 // Same as above - handled by register_module() when available.
683#endif
684 }
685
686 // --- Dynamic module registration ---
687 // Call registration functions for all modules registered before initialize()
688 for (auto& module : modules_) {
689 if (!module.services_registered) {
690 auto result = module.registration_fn(container);
691 if (!result.is_ok()) {
693 result.error().code,
694 "Module '" + module.name + "' registration failed: "
695 + result.error().message,
696 "di::unified_bootstrapper"
697 );
698 }
699 module.services_registered = true;
700 }
701 }
702
703 return VoidResult::ok({});
704}

References kcenon::common::di::bootstrapper_options::enable_database, kcenon::common::di::bootstrapper_options::enable_logging, kcenon::common::di::bootstrapper_options::enable_monitoring, kcenon::common::di::bootstrapper_options::enable_network, kcenon::common::di::service_container::global(), kcenon::common::make_error(), modules_, and kcenon::common::Result< T >::ok().

Referenced by initialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ register_shutdown_hook()

VoidResult kcenon::common::di::unified_bootstrapper::register_shutdown_hook ( const std::string & name,
shutdown_hook hook )
inlinestatic

Register a shutdown hook.

Hooks are called in reverse order of registration during shutdown. Use for cleanup operations that must complete before the system shuts down.

Parameters
nameUnique name for the hook (for logging)
hookCallback function to execute during shutdown
Returns
VoidResult indicating success or error

Possible errors:

  • ALREADY_EXISTS: Hook with this name already registered
  • NOT_INITIALIZED: System not initialized

Definition at line 474 of file unified_bootstrapper.h.

476 {
477
478 std::lock_guard<std::mutex> lock(mutex_);
479
480 if (!initialized_.load()) {
483 "System is not initialized",
484 "di::unified_bootstrapper"
485 );
486 }
487
488 // Check for duplicate
489 for (const auto& entry : shutdown_hooks_) {
490 if (entry.name == name) {
493 "Shutdown hook already registered: " + name,
494 "di::unified_bootstrapper"
495 );
496 }
497 }
498
499 shutdown_hooks_.push_back({name, std::move(hook)});
500 return VoidResult::ok({});
501}
constexpr int NOT_INITIALIZED
Definition compat.h:36

References kcenon::common::error_codes::ALREADY_EXISTS, initialized_, kcenon::common::make_error(), mutex_, kcenon::common::error_codes::NOT_INITIALIZED, kcenon::common::Result< T >::ok(), and shutdown_hooks_.

Here is the call graph for this function:

◆ registered_modules()

std::vector< std::string > kcenon::common::di::unified_bootstrapper::registered_modules ( )
inlinestatic

Get list of registered module names.

Returns
Vector of module names

Definition at line 606 of file unified_bootstrapper.h.

606 {
607 std::lock_guard<std::mutex> lock(mutex_);
608
609 std::vector<std::string> names;
610 names.reserve(modules_.size());
611 for (const auto& entry : modules_) {
612 names.push_back(entry.name);
613 }
614 return names;
615}

References modules_, and mutex_.

◆ request_shutdown()

void kcenon::common::di::unified_bootstrapper::request_shutdown ( bool trigger_shutdown = false)
inlinestatic

Request graceful shutdown.

Sets the shutdown flag and optionally triggers shutdown. Can be called from signal handlers.

Parameters
trigger_shutdownIf true, also calls shutdown()

Definition at line 525 of file unified_bootstrapper.h.

525 {
526 shutdown_requested_.store(true);
527
528 if (trigger_shutdown) {
530 }
531}
std::chrono::milliseconds shutdown_timeout
Default shutdown timeout.

References options_, shutdown(), shutdown_requested_, and kcenon::common::di::bootstrapper_options::shutdown_timeout.

Here is the call graph for this function:

◆ services()

service_container & kcenon::common::di::unified_bootstrapper::services ( )
inlinestatic

Get the service container.

Returns
Reference to the global service container
Exceptions
std::runtime_errorif not initialized

Definition at line 456 of file unified_bootstrapper.h.

456 {
457 if (!initialized_.load()) {
458 throw std::runtime_error(
459 "unified_bootstrapper: System is not initialized. "
460 "Call initialize() first."
461 );
462 }
464}

References kcenon::common::di::service_container::global(), and initialized_.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setup_default_shutdown_hooks()

void kcenon::common::di::unified_bootstrapper::setup_default_shutdown_hooks ( )
inlinestaticprivate

Set up default shutdown hooks.

Definition at line 706 of file unified_bootstrapper.h.

706 {
707 // Register default shutdown hooks for core cleanup
708
709 // Service container cleanup hook (runs last, lowest priority)
710 shutdown_hooks_.push_back({
711 "service_container_cleanup",
712 [](std::chrono::milliseconds) {
713 // Container cleanup is handled by shutdown() itself
714 }
715 });
716}

References shutdown_hooks_.

Referenced by initialize().

Here is the caller graph for this function:

◆ setup_signal_handlers()

void kcenon::common::di::unified_bootstrapper::setup_signal_handlers ( )
inlinestaticprivate

Set up signal handlers.

Definition at line 718 of file unified_bootstrapper.h.

718 {
719#ifndef _WIN32
720 // POSIX signal handling
721 struct sigaction sa;
722 sa.sa_handler = signal_handler;
723 sigemptyset(&sa.sa_mask);
724 sa.sa_flags = 0;
725
726 sigaction(SIGTERM, &sa, nullptr);
727 sigaction(SIGINT, &sa, nullptr);
728#else
729 // Windows signal handling
730 std::signal(SIGTERM, signal_handler);
731 std::signal(SIGINT, signal_handler);
732#endif
733}
static void signal_handler(int signal)
Signal handler function.

References signal_handler().

Referenced by initialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shutdown()

VoidResult kcenon::common::di::unified_bootstrapper::shutdown ( std::chrono::milliseconds timeout = std::chrono::seconds(30))
inlinestatic

Shutdown the unified system gracefully.

Performs the following steps:

  1. Sets shutdown flag to prevent new operations
  2. Calls shutdown hooks in reverse order
  3. Clears all service registrations
  4. Resets initialization state
Parameters
timeoutMaximum time to wait for graceful shutdown
Returns
VoidResult indicating success or shutdown error

Possible errors:

  • TIMEOUT: Shutdown did not complete within timeout
  • NOT_INITIALIZED: System was not initialized

Definition at line 424 of file unified_bootstrapper.h.

424 {
425 std::lock_guard<std::mutex> lock(mutex_);
426
427 if (!initialized_.load()) {
430 "System is not initialized",
431 "di::unified_bootstrapper"
432 );
433 }
434
435 // Mark shutdown as requested
436 shutdown_requested_.store(true);
437
438 // Execute shutdown hooks
439 execute_shutdown_hooks(timeout);
440
441 // Clear all services
443
444 // Clear shutdown hooks and modules
445 shutdown_hooks_.clear();
446 modules_.clear();
447
448 // Reset state
449 initialized_.store(false);
450 shutdown_requested_.store(false);
451 options_ = bootstrapper_options{};
452
453 return VoidResult::ok({});
454}
static void execute_shutdown_hooks(std::chrono::milliseconds timeout)
Execute all shutdown hooks.

References kcenon::common::di::service_container::clear(), execute_shutdown_hooks(), kcenon::common::di::service_container::global(), initialized_, kcenon::common::make_error(), modules_, mutex_, kcenon::common::error_codes::NOT_INITIALIZED, kcenon::common::Result< T >::ok(), options_, shutdown_hooks_, and shutdown_requested_.

Referenced by main(), and request_shutdown().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signal_handler()

void kcenon::common::di::unified_bootstrapper::signal_handler ( int signal)
inlinestaticprivate

Signal handler function.

Definition at line 735 of file unified_bootstrapper.h.

735 {
736 (void)signal; // Unused parameter
737
738 // Request shutdown but don't trigger it from signal handler
739 // The main thread should check is_shutdown_requested() and call shutdown()
740 shutdown_requested_.store(true);
741}

References shutdown_requested_.

Referenced by setup_signal_handlers().

Here is the caller graph for this function:

◆ unregister_module()

VoidResult kcenon::common::di::unified_bootstrapper::unregister_module ( const std::string & name)
inlinestatic

Unregister a module.

Removes a module registration. Does not unregister services that were already registered with the container.

Parameters
nameName of the module to unregister
Returns
VoidResult indicating success or error

Possible errors:

  • NOT_FOUND: Module with this name not found

Definition at line 586 of file unified_bootstrapper.h.

586 {
587 std::lock_guard<std::mutex> lock(mutex_);
588
589 auto it = std::find_if(modules_.begin(), modules_.end(),
590 [&name](const module_entry& entry) {
591 return entry.name == name;
592 });
593
594 if (it == modules_.end()) {
597 "Module not found: " + name,
598 "di::unified_bootstrapper"
599 );
600 }
601
602 modules_.erase(it);
603 return VoidResult::ok({});
604}
constexpr int NOT_FOUND
Definition compat.h:32

References kcenon::common::make_error(), modules_, mutex_, kcenon::common::error_codes::NOT_FOUND, and kcenon::common::Result< T >::ok().

Here is the call graph for this function:

◆ unregister_shutdown_hook()

VoidResult kcenon::common::di::unified_bootstrapper::unregister_shutdown_hook ( const std::string & name)
inlinestatic

Unregister a shutdown hook.

Parameters
nameName of the hook to unregister
Returns
VoidResult indicating success or error

Definition at line 503 of file unified_bootstrapper.h.

504 {
505
506 std::lock_guard<std::mutex> lock(mutex_);
507
508 auto it = std::find_if(shutdown_hooks_.begin(), shutdown_hooks_.end(),
509 [&name](const shutdown_hook_entry& entry) {
510 return entry.name == name;
511 });
512
513 if (it == shutdown_hooks_.end()) {
516 "Shutdown hook not found: " + name,
517 "di::unified_bootstrapper"
518 );
519 }
520
521 shutdown_hooks_.erase(it);
522 return VoidResult::ok({});
523}

References kcenon::common::make_error(), mutex_, kcenon::common::error_codes::NOT_FOUND, kcenon::common::Result< T >::ok(), and shutdown_hooks_.

Here is the call graph for this function:

Member Data Documentation

◆ initialized_

std::atomic< bool > kcenon::common::di::unified_bootstrapper::initialized_ {false}
inlinestaticprivate

◆ modules_

std::vector< unified_bootstrapper::module_entry > kcenon::common::di::unified_bootstrapper::modules_
inlinestaticprivate

◆ mutex_

std::mutex kcenon::common::di::unified_bootstrapper::mutex_
inlinestaticprivate

◆ options_

bootstrapper_options kcenon::common::di::unified_bootstrapper::options_
inlinestaticprivate

Definition at line 349 of file unified_bootstrapper.h.

Referenced by get_options(), initialize(), request_shutdown(), and shutdown().

◆ shutdown_hooks_

std::vector< unified_bootstrapper::shutdown_hook_entry > kcenon::common::di::unified_bootstrapper::shutdown_hooks_
inlinestaticprivate

◆ shutdown_requested_

std::atomic< bool > kcenon::common::di::unified_bootstrapper::shutdown_requested_ {false}
inlinestaticprivate

The documentation for this class was generated from the following file: