11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
21PROMEKI_NAMESPACE_BEGIN
55class DedicatedThreadMediaIO :
public CommandMediaIO {
56 PROMEKI_OBJECT(DedicatedThreadMediaIO, CommandMediaIO)
64 DedicatedThreadMediaIO(ObjectBase *parent =
nullptr);
70 ~DedicatedThreadMediaIO()
override;
73 bool isIdle()
const override;
85 void submit(MediaIOCommand::Ptr cmd)
override;
89 MediaIOCommand::Ptr cmd;
97 class Worker :
public Thread {
99 Worker(DedicatedThreadMediaIO *owner) : _owner(owner) {}
102 void run()
override { _owner->workerMain(); }
105 DedicatedThreadMediaIO *_owner;
110 mutable Mutex _mutex;
112 List<QueueEntry> _queue;
113 List<QueueEntry> _urgentQueue;
114 Atomic<bool> _shutdown{
false};
115 Atomic<bool> _busy{
false};