Skip to content

deps: Decouple monitoring integration via EventBus pattern #342

Description

@kcenon

Summary

Decouple network_system's monitoring integration by replacing direct monitoring_system dependency with EventBus-based metric publishing using common_system interfaces.

5W1H Specification

  • Who: network_system maintainers
  • What: Replace direct monitoring_system dependency with IMetricCollector interface + EventBus pattern
  • Where: include/kcenon/network/integration/, monitoring_integration.h
  • When: After common_system#234 is merged (IMetricCollector interface) ✅ MERGED
  • Why:
    • Current KCENON_WITH_MONITORING_SYSTEM creates optional bidirectional dependency
    • Bidirectional dependencies complicate build order and isolated testing
    • EventBus pattern enables metric emission without compile-time coupling
  • How:
    1. Use common_system IMetricCollector for metric emission
    2. Optionally publish NetworkMetricEvent via EventBus for external consumers
    3. Remove compile-time monitoring_system dependency

Priority

HIGH - Resolves bidirectional dependency with monitoring_system

Sub-Issues

Current State Analysis

Current:
network_system ──KCENON_WITH_MONITORING_SYSTEM──> monitoring_system
monitoring_system ──MONITORING_HAS_NETWORK_SYSTEM──> network_system
                    ↑ Bidirectional risk ↑

Target:
network_system ──> common_system (IMetricCollector, EventBus)
                         ↑
monitoring_system ──────┘ (subscribes to events)

Tasks (Now tracked in sub-issues)

Acceptance Criteria

  • network_system builds without monitoring_system installed
  • Metrics still flow to monitoring_system when both are present (via EventBus)
  • No KCENON_WITH_MONITORING_SYSTEM guards in installed headers
  • Integration tests pass in isolation

Dependencies

Parent Epic

Related Issues

Metadata

Metadata

Assignees

Labels

architectureArchitectural changes and designdependenciesExternal dependencies managementpriority:highHigh priority issuerefactoringCode refactoring and improvements

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions