107 std::shared_ptr<storage::node_repository> repo,
109 std::shared_ptr<di::ILogger> logger =
nullptr);
148 [[nodiscard]]
auto remove_node(std::string_view node_id) -> kcenon::pacs::VoidResult;
156 [[nodiscard]]
auto get_node(std::string_view node_id)
const
157 -> std::optional<remote_node>;
224 std::string_view node_id,
225 std::span<const std::
string> sop_classes)
239 std::string_view node_id,
240 std::unique_ptr<network::association> assoc);
void start_health_check()
Start the automatic health check scheduler.
auto is_health_check_running() const noexcept -> bool
Check if health check is running.
auto get_statistics(std::string_view node_id) const -> node_statistics
Get statistics for a node.
auto update_node(const remote_node &node) -> kcenon::pacs::VoidResult
Update an existing remote node.
auto get_node(std::string_view node_id) const -> std::optional< remote_node >
Get a node by ID.
auto get_status(std::string_view node_id) const -> node_status
Get the current status of a node.
std::unique_ptr< impl > impl_
~remote_node_manager()
Destructor - stops health check if running.
remote_node_manager(const remote_node_manager &)=delete
void verify_all_nodes_async()
Verify all nodes asynchronously.
auto operator=(remote_node_manager &&) -> remote_node_manager &=delete
void stop_health_check()
Stop the automatic health check scheduler.
remote_node_manager(std::shared_ptr< storage::node_repository > repo, node_manager_config config={}, std::shared_ptr< di::ILogger > logger=nullptr)
Construct a remote node manager.
auto verify_node(std::string_view node_id) -> kcenon::pacs::VoidResult
Verify a node's connectivity synchronously.
auto list_nodes_by_status(node_status status) const -> std::vector< remote_node >
List nodes filtered by status.
auto remove_node(std::string_view node_id) -> kcenon::pacs::VoidResult
Remove a remote node.
auto list_nodes() const -> std::vector< remote_node >
List all registered nodes.
auto acquire_association(std::string_view node_id, std::span< const std::string > sop_classes) -> kcenon::pacs::Result< std::unique_ptr< network::association > >
Acquire an association from the pool.
void reset_statistics(std::string_view node_id="")
Reset statistics for a node.
auto config() const noexcept -> const node_manager_config &
Get the current configuration.
void set_config(node_manager_config new_config)
Update the configuration.
void set_status_callback(node_status_callback callback)
Set the status change callback.
auto add_node(const remote_node &node) -> kcenon::pacs::VoidResult
Add a new remote node.
remote_node_manager(remote_node_manager &&)=delete
void release_association(std::string_view node_id, std::unique_ptr< network::association > assoc)
Release an association back to the pool.
auto operator=(const remote_node_manager &) -> remote_node_manager &=delete
auto verify_node_async(std::string_view node_id) -> std::future< kcenon::pacs::VoidResult >
Verify a node's connectivity asynchronously.
Logger interface for dependency injection.
node_status
Status of a remote PACS node.
std::function< void(std::string_view node_id, node_status status)> node_status_callback
Callback function type for node status changes.
Remote PACS node data structures for client operations.
Result<T> type aliases and helpers for PACS system.
Configuration for the remote node manager.
Statistics for a remote node.