-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Summary
The PulseAudioStrategy and PipeWireStrategy classes in linux.py share a significant amount of duplicated code.
Location
src/proctap/backends/linux.py
Problem
Both classes implement nearly identical code for:
find_process_stream()method (~30 lines)_setup_isolated_capture()method (~60 lines)_cleanup_isolation_modules()method (~40 lines)- Constructor initialization patterns
The PipeWireStrategy even has a comment: Setup isolated capture using null-sink (same as PulseAudio strategy)
Impact
- Approximately 130+ lines of duplicated code
- Bug fixes must be applied in multiple places
- Harder to maintain and understand
Suggested Fix
Extract common functionality into a base class or mixin:
class PulseAudioCompatStrategyBase(LinuxAudioStrategy):
"""Base class for strategies using PulseAudio API."""
def find_process_stream(self, pid: int) -> bool:
# Common implementation
def _setup_isolated_capture(self, sink_name: str) -> None:
# Common implementation
def _cleanup_isolation_modules(self) -> None:
# Common implementation
class PulseAudioStrategy(PulseAudioCompatStrategyBase):
def _capture_worker(self, source_name: str) -> None:
# parec-specific implementation
class PipeWireStrategy(PulseAudioCompatStrategyBase):
def _capture_worker(self, source_name: str) -> None:
# pw-record-specific implementationLabels
readability, refactor
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels