#pragma once #include "PrtCnvThread.hpp" #include #include class QTcpServer; class QMutex; namespace N_CoPrtCnv { class CoPrtCnvCentralTelegram; } namespace PrtCnv { class PrtCnvInjectionSocket; class PrtCnvInjectionThread : public PrtCnvThread { Q_OBJECT public: ~PrtCnvInjectionThread(); explicit PrtCnvInjectionThread(PrtCnvThreadStarter* a_parent); int32_t create(NGL::Settings *settings) override; int32_t init() override; int32_t start() override; N_CoPrtCnv::CoPrtCnvCentralTelegram *getNextCentralInjectionTelegram(); N_CoPrtCnv::CoPrtCnvCentralTelegram *getNextRadioInjectionTelegram(); void addToCentralList(N_CoPrtCnv::CoPrtCnvCentralTelegram *a_telegram); void addToRadioList(N_CoPrtCnv::CoPrtCnvCentralTelegram *a_telegram); protected: uint16_t m_Port; bool m_Enabled; QTcpServer *m_Server; std::queue m_CentralTelegramList; QMutex *m_CentralListMutex; std::queue m_RadioTelegramList; QMutex *m_RadioListMutex; std::set m_SocketList; public slots: void connectClient(); void disconnectClient(PrtCnvInjectionSocket* a_injectionSocket); }; }