2020-06-22 16:45:57 +02:00
|
|
|
#pragma once
|
2022-06-15 16:08:28 +02:00
|
|
|
#include "block.h"
|
2020-06-22 16:45:57 +02:00
|
|
|
|
|
|
|
namespace dsp {
|
2020-11-02 03:57:44 +01:00
|
|
|
template <class T>
|
2022-06-15 16:08:28 +02:00
|
|
|
class Sink : public block {
|
2020-06-22 16:45:57 +02:00
|
|
|
public:
|
2022-06-15 16:08:28 +02:00
|
|
|
Sink() {}
|
2020-06-22 16:45:57 +02:00
|
|
|
|
2022-06-15 16:08:28 +02:00
|
|
|
Sink(stream<T>* in) { init(in); }
|
2020-06-22 16:45:57 +02:00
|
|
|
|
2022-06-15 16:08:28 +02:00
|
|
|
virtual ~Sink() {}
|
2020-11-02 16:16:21 +01:00
|
|
|
|
2022-06-15 16:08:28 +02:00
|
|
|
virtual void init(stream<T>* in) {
|
2021-04-10 03:06:51 +02:00
|
|
|
_in = in;
|
2022-06-15 16:08:28 +02:00
|
|
|
registerInput(_in);
|
|
|
|
_block_init = true;
|
2021-04-10 03:06:51 +02:00
|
|
|
}
|
|
|
|
|
2022-06-15 16:08:28 +02:00
|
|
|
virtual void setInput(stream<T>* in) {
|
|
|
|
assert(_block_init);
|
|
|
|
std::lock_guard<std::recursive_mutex> lck(ctrlMtx);
|
|
|
|
tempStop();
|
|
|
|
unregisterInput(_in);
|
2021-04-10 03:06:51 +02:00
|
|
|
_in = in;
|
2022-06-15 16:08:28 +02:00
|
|
|
registerInput(_in);
|
|
|
|
tempStart();
|
2021-04-10 03:06:51 +02:00
|
|
|
}
|
|
|
|
|
2022-06-15 16:08:28 +02:00
|
|
|
virtual int run() = 0;
|
2021-04-10 03:06:51 +02:00
|
|
|
|
2022-06-15 16:08:28 +02:00
|
|
|
protected:
|
2021-04-10 03:06:51 +02:00
|
|
|
stream<T>* _in;
|
|
|
|
};
|
2022-06-15 16:08:28 +02:00
|
|
|
}
|