#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 <cassert>
#include "Thread.h" #include "Thread.h"
#include "Log.h"
using namespace std; 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) void CThread::EntryRunner(CThread * thread)
{ {
assert(thread != nullptr);
thread->Entry(); thread->Entry();
CLog::logTrace("Exiting %s thread", thread->m_name.c_str());
} }

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

@ -37,7 +37,7 @@ const unsigned int APRS_READ_TIMEOUT = 1U;
const unsigned int APRS_KEEP_ALIVE_TIMEOUT = 60U; 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) : 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_username(callsign),
m_password(password), m_password(password),
m_ssid(callsign), 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) : 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_username(callsign),
m_password(password), m_password(password),
m_ssid(callsign), m_ssid(callsign),

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

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

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

Loading…
Cancel
Save

Powered by TurnKey Linux.