PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
service_registration.h File Reference

ServiceContainer registration module for PACS services. More...

#include "service_interfaces.h"
#include <kcenon/pacs/storage/file_storage.h>
#include <kcenon/pacs/encoding/compression/codec_factory.h>
#include <kcenon/common/di/service_container.h>
#include <filesystem>
#include <memory>
Include dependency graph for service_registration.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  kcenon::pacs::di::registration_config
 Configuration for service registration. More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::pacs
 
namespace  kcenon::pacs::di
 

Functions

kcenon::common::VoidResult kcenon::pacs::di::register_services (kcenon::common::di::IServiceContainer &container, const registration_config &config={})
 
template<typename TStorage >
requires std::derived_from<TStorage, IDicomStorage>
kcenon::common::VoidResult kcenon::pacs::di::register_storage (kcenon::common::di::IServiceContainer &container, std::function< std::shared_ptr< TStorage >(kcenon::common::di::IServiceContainer &)> factory, kcenon::common::di::service_lifetime lifetime=kcenon::common::di::service_lifetime::singleton)
 Register storage service with custom implementation.
 
kcenon::common::VoidResult kcenon::pacs::di::register_storage_instance (kcenon::common::di::IServiceContainer &container, std::shared_ptr< IDicomStorage > instance)
 Register storage service with pre-created instance.
 
template<typename TNetwork >
requires std::derived_from<TNetwork, IDicomNetwork>
kcenon::common::VoidResult kcenon::pacs::di::register_network (kcenon::common::di::IServiceContainer &container, std::function< std::shared_ptr< TNetwork >(kcenon::common::di::IServiceContainer &)> factory, kcenon::common::di::service_lifetime lifetime=kcenon::common::di::service_lifetime::singleton)
 Register network service with custom implementation.
 
kcenon::common::VoidResult kcenon::pacs::di::register_network_instance (kcenon::common::di::IServiceContainer &container, std::shared_ptr< IDicomNetwork > instance)
 Register network service with pre-created instance.
 
template<typename TLogger >
requires std::derived_from<TLogger, ILogger>
kcenon::common::VoidResult kcenon::pacs::di::register_logger (kcenon::common::di::IServiceContainer &container, std::function< std::shared_ptr< TLogger >(kcenon::common::di::IServiceContainer &)> factory, kcenon::common::di::service_lifetime lifetime=kcenon::common::di::service_lifetime::singleton)
 Register logger service with custom implementation.
 
kcenon::common::VoidResult kcenon::pacs::di::register_logger_instance (kcenon::common::di::IServiceContainer &container, std::shared_ptr< ILogger > instance)
 Register logger service with pre-created instance.
 
std::shared_ptr< kcenon::common::di::service_container > kcenon::pacs::di::create_container (const registration_config &config={})
 

Detailed Description

ServiceContainer registration module for PACS services.

This file provides functions for registering DICOM services with common_system's ServiceContainer, enabling dependency injection throughout the pacs_system.

Usage:

auto container = std::make_shared<kcenon::common::di::service_container>();
auto storage = container->resolve<kcenon::pacs::di::IDicomStorage>();
auto network = container->resolve<kcenon::pacs::di::IDicomNetwork>();
Network service interface for DICOM communication.
kcenon::common::VoidResult register_services(kcenon::common::di::IServiceContainer &container, const registration_config &config={})
See also
Issue #312 - ServiceContainer based DI Integration
Author
kcenon
Since
1.0.0

Definition in file service_registration.h.