#21 add thread name, kill all child threads

pull/32/head
Geoffrey Merck 4 years ago
parent 3f716ddfd6
commit 5144dd4d9c

@ -18,10 +18,12 @@
#include <cassert>
#include "Thread.h"
#include "Log.h"
using namespace std;
CThread::CThread()
CThread::CThread(const std::string& name) :
m_name(name)
{
}
@ -53,5 +55,7 @@ void CThread::Wait()
void CThread::EntryRunner(CThread * thread)
{
assert(thread != nullptr);
thread->Entry();
CLog::logTrace("Exiting %s thread", thread->m_name.c_str());
}

@ -23,10 +23,11 @@
#define Thread_H
#include <thread>
#include <string>
class CThread {
public:
CThread();
CThread(const std::string& name);
virtual ~CThread();
void Create();
void Run();
@ -39,6 +40,7 @@ protected:
private:
static void EntryRunner(CThread * thread);
std::string m_name;
std::thread m_thread;
};

@ -37,7 +37,7 @@ const unsigned int APRS_READ_TIMEOUT = 1U;
const unsigned int APRS_KEEP_ALIVE_TIMEOUT = 60U;
CAPRSHandlerThread::CAPRSHandlerThread(const std::string& callsign, const std::string& password, const std::string& address, const std::string& hostname, unsigned int port) :
CThread(),
CThread("APRS"),
m_username(callsign),
m_password(password),
m_ssid(callsign),
@ -65,7 +65,7 @@ m_clientName(FULL_PRODUCT_NAME)
}
CAPRSHandlerThread::CAPRSHandlerThread(const std::string& callsign, const std::string& password, const std::string& address, const std::string& hostname, unsigned int port, const std::string& filter) :
CThread(),
CThread("APRS"),
m_username(callsign),
m_password(password),
m_ssid(callsign),

@ -34,6 +34,7 @@ const unsigned int OPENDSTAR_PORT = 20001U;
const unsigned int TCP_TIMEOUT = 10U;
CDPlusAuthenticator::CDPlusAuthenticator(const std::string& loginCallsign, const std::string& gatewayCallsign, const std::string& address, CCacheManager* cache) :
CThread("DPlus"),
m_loginCallsign(loginCallsign),
m_gatewayCallsign(gatewayCallsign),
m_address(address),
@ -106,7 +107,7 @@ void* CDPlusAuthenticator::Entry()
void CDPlusAuthenticator::stop()
{
m_killed = true;
CLog::logInfo("Stopping DPpus Authenticator");
Wait();
}

@ -32,6 +32,7 @@ const unsigned int LOOP_DELAY = 5UL;
const unsigned int LOOP_TICKS = 200U;
CIcomRepeaterProtocolHandler::CIcomRepeaterProtocolHandler(const std::string& address, unsigned int port, const std::string& icomAddress, unsigned int icomPort) :
CThread("Icom Protocol Handler"),
m_socket(address, port),
m_icomAddress(),
m_icomPort(icomPort),
@ -527,7 +528,7 @@ CAMBEData* CIcomRepeaterProtocolHandler::readBusyAMBE()
void CIcomRepeaterProtocolHandler::close()
{
m_killed = true;
CLog::logInfo("Stopping Icom Repeater protocol handler thread");
Wait();
}

@ -60,7 +60,7 @@ const std::string LOOPBACK_ADDRESS("127.0.0.1");
const unsigned int REMOTE_DUMMY_PORT = 65016U;
CDStarGatewayThread::CDStarGatewayThread(const std::string& logDir, const std::string& dataDir, const std::string& name) :
CThread(),
CThread("Gateway"),
m_logDir(logDir),
m_dataDir(dataDir),
m_name(name),
@ -481,11 +481,18 @@ void* CDStarGatewayThread::Entry()
delete m_remote;
}
if(m_aprsWriter != nullptr) {
m_aprsWriter->close();
delete m_aprsWriter;
}
if (headerLogger != NULL) {
headerLogger->close();
delete headerLogger;
}
CDPlusHandler::finalise();
return NULL;
}

Loading…
Cancel
Save

Powered by TurnKey Linux.