create a base class for python-implemented modules
This commit is contained in:
parent
51453662e2
commit
01260d66c8
@ -1,11 +1,11 @@
|
||||
from csdr.module import Module
|
||||
from pycsdr.modules import Buffer
|
||||
from typing import Union, Callable
|
||||
|
||||
|
||||
class Chain:
|
||||
class Chain(Module):
|
||||
def __init__(self, workers):
|
||||
self.reader = None
|
||||
self.writer = None
|
||||
super().__init__()
|
||||
self.clientReader = None
|
||||
self.workers = workers
|
||||
for i in range(1, len(self.workers)):
|
||||
@ -23,14 +23,14 @@ class Chain:
|
||||
def setReader(self, reader):
|
||||
if self.reader is reader:
|
||||
return
|
||||
self.reader = reader
|
||||
super().setReader(reader)
|
||||
if self.workers:
|
||||
self.workers[0].setReader(reader)
|
||||
|
||||
def setWriter(self, writer):
|
||||
if self.writer is writer:
|
||||
return
|
||||
self.writer = writer
|
||||
super().setWriter(writer)
|
||||
if self.workers:
|
||||
self.workers[-1].setWriter(writer)
|
||||
|
||||
|
14
csdr/module.py
Normal file
14
csdr/module.py
Normal file
@ -0,0 +1,14 @@
|
||||
import pycsdr.modules
|
||||
|
||||
|
||||
class Module(pycsdr.modules.Module):
|
||||
def __init__(self):
|
||||
self.reader = None
|
||||
self.writer = None
|
||||
super().__init__()
|
||||
|
||||
def setReader(self, reader: pycsdr.modules.Reader) -> None:
|
||||
self.reader = reader
|
||||
|
||||
def setWriter(self, writer: pycsdr.modules.Writer) -> None:
|
||||
self.writer = writer
|
@ -4,7 +4,7 @@ import threading
|
||||
from owrx.audio import ProfileSourceSubscriber
|
||||
from owrx.audio.wav import AudioWriter
|
||||
from owrx.audio.queue import QueueJob
|
||||
from csdr.chain import Chain
|
||||
from csdr.module import Module
|
||||
import pickle
|
||||
|
||||
import logging
|
||||
@ -13,7 +13,7 @@ logger = logging.getLogger(__name__)
|
||||
logger.setLevel(logging.INFO)
|
||||
|
||||
|
||||
class AudioChopper(threading.Thread, Chain, ProfileSourceSubscriber):
|
||||
class AudioChopper(threading.Thread, Module, ProfileSourceSubscriber):
|
||||
# TODO parser typing
|
||||
def __init__(self, mode_str: str, parser):
|
||||
self.parser = parser
|
||||
@ -25,7 +25,7 @@ class AudioChopper(threading.Thread, Chain, ProfileSourceSubscriber):
|
||||
raise ValueError("Mode {} is not an audio chopper mode".format(mode_str))
|
||||
self.profile_source = mode.get_profile_source()
|
||||
super().__init__()
|
||||
Chain.__init__(self, [])
|
||||
Module.__init__(self)
|
||||
|
||||
def stop_writers(self):
|
||||
while self.writers:
|
||||
|
Loading…
Reference in New Issue
Block a user