libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
sharedthreadmediaio.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
14#include <promeki/strand.h>
15
16PROMEKI_NAMESPACE_BEGIN
17
18class ThreadPool;
19
48class SharedThreadMediaIO : public CommandMediaIO {
49 PROMEKI_OBJECT(SharedThreadMediaIO, CommandMediaIO)
50 public:
52 SharedThreadMediaIO(ObjectBase *parent = nullptr);
53
55 ~SharedThreadMediaIO() override;
56
61 bool isIdle() const override;
62
70 void cancelPendingWork() override;
71
72 protected:
83 void submit(MediaIOCommand::Ptr cmd) override;
84
101 void refreshStrandWorkTag();
102
111 Strand &strand() { return _strand; }
112
139 static ThreadPool &pool();
140
141 private:
142 Strand _strand{pool()};
147 String _lastWorkTagName;
148};
149
150PROMEKI_NAMESPACE_END
151
152#endif // PROMEKI_ENABLE_PROAV