HARDT - The Ham Radio DSP Toolkit
hcollector.h
1 #ifndef __HCOLLECTOR_H
2 #define __HCOLLECTOR_H
3 
4 #include "hreader.h"
5 #include "hwriter.h"
6 #include "hwriterconsumer.h"
7 #include "hprobe.h"
8 
9 #include <vector>
10 
19 template <class T>
20 class HCollector: public HReader<T>, public HWriter<T>, public HWriterConsumer<T>
21 {
22  private:
23 
24  HWriter<T>* _writer;
25  HReader<T>* _reader;
26  size_t _blocksizeIn;
27  size_t _blocksizeOut;
28 
29  HProbe<T>* _probe;
30 
31  T* _buffer;
32  int _collected;
33 
34  public:
35 
44  HCollector(HWriter<T>* writer, size_t blocksizeIn, size_t blocksizeOut, HProbe<T>* probe = nullptr);
45 
54  HCollector(HWriterConsumer<T>* consumer, size_t blocksizeIn, size_t blocksizeOut, HProbe<T>* probe = nullptr);
55 
64  HCollector(HReader<T>* reader, size_t blocksizeIn, size_t blocksizeOut, HProbe<T>* probe = nullptr);
65 
67  void SetWriter(HWriter<T>* writer);
68 
69  public:
70 
74  ~HCollector();
75 
83  int Write(T* src, size_t blocksize);
84 
92  int Read(T* dest, size_t blocksize);
93 
97  bool Start();
98 
102  bool Stop();
103 
109  bool Command(HCommand* command) {
110  if( _writer != nullptr )
111  {
112  if( !_writer->Command(command) )
113  {
114  return false;
115  }
116  }
117  if( _reader != nullptr )
118  {
119  if( !_reader->Command(command) )
120  {
121  return false;
122  }
123  }
124  return true;
125  }
126 };
127 
128 #endif
HReader::Command
virtual bool Command(HCommand *command)=0
HCollector::Command
bool Command(HCommand *command)
Definition: hcollector.h:109
HCollector::Stop
bool Stop()
Definition: hcollector.cpp:126
HCollector::Write
int Write(T *src, size_t blocksize)
Definition: hcollector.cpp:56
HCollector::~HCollector
~HCollector()
Definition: hcollector.cpp:48
HWriter
Definition: hwriter.h:10
HCollector
Definition: hcollector.h:20
HCollector::SetWriter
void SetWriter(HWriter< T > *writer)
Definition: hcollector.cpp:106
HWriter::Command
virtual bool Command(HCommand *command)=0
HReader
Definition: hreader.h:24
HCollector::Start
bool Start()
Definition: hcollector.cpp:112
HProbe
Definition: hprobe.h:10
HCollector::HCollector
HCollector(HWriter< T > *writer, size_t blocksizeIn, size_t blocksizeOut, HProbe< T > *probe=nullptr)
Definition: hcollector.cpp:7
HCollector::Read
int Read(T *dest, size_t blocksize)
Definition: hcollector.cpp:83
HCommand
Definition: hcommand.h:81
HWriterConsumer
Definition: hwriterconsumer.h:8