#pragma once #include #include "SDRThreadTask.h" #include "wx/event.h" class SDRThreadQueue { public: enum SDR_PRIORITY { SDR_PRIORITY_HIGHEST, SDR_PRIORITY_HIGHER, SDR_PRIORITY_NORMAL, SDR_PRIORITY_BELOW_NORMAL, SDR_PRIORITY_LOW, SDR_PRIORITY_IDLE }; SDRThreadQueue(wxEvtHandler* pParent); void addTask(const SDRThreadTask& task, const SDR_PRIORITY& priority = SDR_PRIORITY_NORMAL); void report(const SDRThreadTask::SDR_COMMAND& cmd, const wxString& sArg = wxEmptyString, int iArg = 0); SDRThreadTask pop(); size_t stackSize(); wxEvtHandler* getHandler(); private: wxEvtHandler* m_pParent; std::multimap m_Tasks; wxMutex m_MutexQueue; wxSemaphore m_QueueCount; };