Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
service_container_interface.h File Reference

Service container interfaces for dependency injection. More...

#include <any>
#include <concepts>
#include <functional>
#include <memory>
#include <string>
#include <typeindex>
#include <vector>
#include "../patterns/result.h"
#include "../concepts/service.h"
#include "../error/error_codes.h"
Include dependency graph for service_container_interface.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  kcenon::common::di::service_descriptor
 Metadata describing a registered service. More...
 
class  kcenon::common::di::IServiceContainer
 Abstract interface for dependency injection containers. More...
 
interface  kcenon::common::di::IServiceScope
 Scoped service container for request-level isolation. More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::common
 Core interfaces.
 
namespace  kcenon::common::di
 
namespace  kcenon::common::di::di_error_codes
 Error codes specific to dependency injection.
 

Enumerations

enum class  kcenon::common::di::service_lifetime { kcenon::common::di::singleton , kcenon::common::di::transient , kcenon::common::di::scoped }
 Defines the lifetime policy for registered services. More...
 

Functions

const char * kcenon::common::di::to_string (service_lifetime lifetime)
 Convert service_lifetime to string representation.
 

Variables

constexpr int kcenon::common::di::di_error_codes::service_not_registered = error::codes::common_errors::di_service_not_registered
 Service not registered in container.
 
constexpr int kcenon::common::di::di_error_codes::circular_dependency = error::codes::common_errors::di_circular_dependency
 Circular dependency detected during resolution.
 
constexpr int kcenon::common::di::di_error_codes::already_registered = error::codes::common_errors::di_already_registered
 Service already registered (duplicate registration attempt)
 
constexpr int kcenon::common::di::di_error_codes::factory_error = error::codes::common_errors::di_factory_error
 Factory threw an exception during instantiation.
 
constexpr int kcenon::common::di::di_error_codes::invalid_lifetime = error::codes::common_errors::di_invalid_lifetime
 Invalid service lifetime configuration.
 
constexpr int kcenon::common::di::di_error_codes::scoped_from_root = error::codes::common_errors::di_scoped_from_root
 Scoped service resolved from root container.
 

Detailed Description

Service container interfaces for dependency injection.

This header defines the public interfaces for a dependency injection container, enabling loosely coupled systems where services can be registered, resolved, and managed with configurable lifetimes.

Thread Safety:

  • IServiceContainer implementations MUST be thread-safe for concurrent access.
  • Service registration and resolution should use appropriate synchronization.
  • Scoped containers inherit thread-safety requirements from parent.

Circular Dependency Detection:

  • Implementations MUST detect circular dependencies during resolution.
  • When detected, resolve() should return an error with appropriate code.
  • Detection should track resolution stack per-thread to avoid false positives.
See also
TICKET-101 for design rationale and requirements.

Definition in file service_container_interface.h.