Files
qt6-migration-pipeline/TetraIF/PrtCnv/PrtCnvInjectionThread.hpp
T
2026-07-14 12:07:36 +02:00

102 lines
1.3 KiB
C++

#pragma once
#include "PrtCnvThread.hpp"
#include <queue>
#include <set>
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<N_CoPrtCnv::CoPrtCnvCentralTelegram *> m_CentralTelegramList;
QMutex *m_CentralListMutex;
std::queue<N_CoPrtCnv::CoPrtCnvCentralTelegram *> m_RadioTelegramList;
QMutex *m_RadioListMutex;
std::set<PrtCnvInjectionSocket*> m_SocketList;
public slots:
void connectClient();
void disconnectClient(PrtCnvInjectionSocket* a_injectionSocket);
};
}