Reordered error downgrading, order of going offline, and renamed locks
parent
01c62b6445
commit
3358241abe
|
|
@ -156,14 +156,15 @@ void Communication::readTask() {
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lk(messageCallbacksLock);
|
std::lock_guard<std::mutex> lk(messageCallbacksLock);
|
||||||
|
|
||||||
// We want callbacks to be able to access errors
|
|
||||||
EventManager::GetInstance().cancelErrorDowngradingOnCurrentThread();
|
|
||||||
for(auto& cb : messageCallbacks) {
|
for(auto& cb : messageCallbacks) {
|
||||||
if(!closing) { // We might have closed while reading or processing
|
if(!closing) { // We might have closed while reading or processing
|
||||||
|
// We want callbacks to be able to access errors
|
||||||
|
EventManager::GetInstance().cancelErrorDowngradingOnCurrentThread();
|
||||||
cb.second.callIfMatch(msg);
|
cb.second.callIfMatch(msg);
|
||||||
|
EventManager::GetInstance().downgradeErrorsOnCurrentThread();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EventManager::GetInstance().downgradeErrorsOnCurrentThread();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -113,14 +113,14 @@ void MultiChannelCommunication::readTask() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We want callbacks to be able to access errors
|
|
||||||
EventManager::GetInstance().cancelErrorDowngradingOnCurrentThread();
|
|
||||||
for(auto& cb : messageCallbacks) { // We might have closed while reading or processing
|
for(auto& cb : messageCallbacks) { // We might have closed while reading or processing
|
||||||
if(!closing) {
|
if(!closing) {
|
||||||
|
// We want callbacks to be able to access errors
|
||||||
|
EventManager::GetInstance().cancelErrorDowngradingOnCurrentThread();
|
||||||
cb.second.callIfMatch(msg);
|
cb.second.callIfMatch(msg);
|
||||||
|
EventManager::GetInstance().downgradeErrorsOnCurrentThread();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EventManager::GetInstance().downgradeErrorsOnCurrentThread();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -203,14 +203,14 @@ bool Device::close() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isOnline())
|
||||||
|
goOffline();
|
||||||
|
|
||||||
if(internalHandlerCallbackID)
|
if(internalHandlerCallbackID)
|
||||||
com->removeMessageCallback(internalHandlerCallbackID);
|
com->removeMessageCallback(internalHandlerCallbackID);
|
||||||
|
|
||||||
internalHandlerCallbackID = 0;
|
internalHandlerCallbackID = 0;
|
||||||
|
|
||||||
if(isOnline())
|
|
||||||
goOffline();
|
|
||||||
|
|
||||||
return com->close();
|
return com->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ public:
|
||||||
eventsLock.unlock();
|
eventsLock.unlock();
|
||||||
runCallbacks(event);
|
runCallbacks(event);
|
||||||
} else {
|
} else {
|
||||||
std::lock_guard<std::mutex> lk(errorsMutex);
|
std::lock_guard<std::mutex> errorsLock(errorsMutex);
|
||||||
add_internal_error(event);
|
add_internal_error(event);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -293,7 +293,6 @@ void STM32::readTask() {
|
||||||
if(bytesRead > 0)
|
if(bytesRead > 0)
|
||||||
readQueue.enqueue_bulk(readbuf, bytesRead);
|
readQueue.enqueue_bulk(readbuf, bytesRead);
|
||||||
}
|
}
|
||||||
EventManager::GetInstance().cancelErrorDowngradingOnCurrentThread();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void STM32::writeTask() {
|
void STM32::writeTask() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue