Skip to content

[REFACTOR] Make buffering_strategy use ring_buffer #312

Description

@kcenon

Summary

Refactor buffering strategy implementations to use the existing ring_buffer template instead of duplicating ring buffer logic.

Parent Issue

Part of #309 (Consolidate buffering layer - C++20 Module preparation)

Current State

  • buffering_strategy.h imports ring_buffer.h but doesn't use it
  • Each strategy class (fixed_size_strategy, time_based_strategy, etc.) implements its own vector-based buffer
  • Ring buffer logic (overflow handling, circular writes) is duplicated

Problem

  • ring_buffer.h provides optimized, lock-free implementation but is underutilized
  • Strategy classes duplicate buffer management code
  • Inconsistent buffer behavior across strategies

Proposed Solution

  1. Modify strategy classes to use ring_buffer<buffered_metric> internally
  2. Keep strategy-specific logic (flush triggers, priority handling) in strategy classes
  3. Delegate core buffer operations to ring_buffer

Acceptance Criteria

  • Strategy classes use ring_buffer for storage
  • All buffering strategy tests pass
  • Performance maintained or improved
  • Memory footprint reduced

Files Affected

  • src/utils/buffering_strategy.h
  • src/utils/ring_buffer.h
  • tests/test_buffering_strategies.cpp

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions