102 lines
1.3 KiB
C++
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);
|
|
|
|
};
|
|
|
|
}
|