Added BCTransmitter & woker thread.
This commit is contained in:
@@ -47,15 +47,56 @@ using namespace Qt::StringLiterals;
|
||||
|
||||
BCValueManager::BCValueManager()
|
||||
{
|
||||
qRegisterMetaType<BCValue>("BCValue");
|
||||
|
||||
_transmitter.moveToThread(&_worker);
|
||||
|
||||
// 4. Verbindungen herstellen (Signal/Slot über Thread-Grenzen)
|
||||
|
||||
// A) Befehl senden (Manager -> Runner)
|
||||
connect(this, &BCValueManager::newCommandArrived, &_transmitter, &BCTransmitter::addCommand);
|
||||
|
||||
// B) Ergebnisse empfangen (Runner -> Manager)
|
||||
connect(&_transmitter, &BCTransmitter::commandFinished, this, &BCValueManager::onCommandFinished);
|
||||
connect(&_transmitter, &BCTransmitter::messageLogged, this, &BCValueManager::onRunnerMessage);
|
||||
|
||||
// C) Aufräumen: Wenn Thread endet, lösche den Runner
|
||||
connect(&_worker, &QThread::finished, &_transmitter, &QObject::deleteLater);
|
||||
|
||||
// 5. Thread starten
|
||||
_worker.start();
|
||||
}
|
||||
|
||||
BCValueManager::~BCValueManager()
|
||||
{
|
||||
// nothing to do here for now,
|
||||
// our models are autokilled.
|
||||
|
||||
_worker.quit(); // Event Loop stoppen
|
||||
_worker.wait(); // Warten bis Thread wirklich fertig ist
|
||||
}
|
||||
|
||||
|
||||
void BCValueManager::transmitValue(const BCValue& value)
|
||||
{
|
||||
// Wir rufen keine Methode am Runner direkt auf!
|
||||
// Wir emitten ein Signal. Qt kümmert sich um den Thread-Wechsel.
|
||||
|
||||
emit newCommandArrived(value);
|
||||
|
||||
}
|
||||
|
||||
void BCValueManager::onCommandFinished(int id, bool success)
|
||||
{
|
||||
qDebug() << "[Manager] Command" << id << "finished. Success:" << success;
|
||||
}
|
||||
|
||||
void BCValueManager::onRunnerMessage(const QString &msg)
|
||||
{
|
||||
qDebug() << "[Worker says]:" << msg;
|
||||
}
|
||||
|
||||
|
||||
void BCValueManager::onToggleConnectionState( bool connect )
|
||||
{
|
||||
if( connect )
|
||||
@@ -69,7 +110,8 @@ void BCValueManager::onToggleConnectionState( bool connect )
|
||||
{
|
||||
qDebug() << "Console not responding";
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
/*
|
||||
swVersion = getValue(CONSOLE, CONSOLE_REF_SW);
|
||||
printf( "Console information:" _NL
|
||||
|
||||
Reference in New Issue
Block a user