Device: Guard mutex usage
parent
83ab65b062
commit
ebf9409c18
|
|
@ -554,26 +554,28 @@ bool Device::goOnline() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
assignedClientId = com->getClientIDSync();
|
if(supportsNetworkMutex()) {
|
||||||
if(assignedClientId) {
|
assignedClientId = com->getClientIDSync();
|
||||||
// firmware supports clientid/mutex
|
if(assignedClientId) {
|
||||||
networkMutexCallbackHandle = lockAllNetworks(std::numeric_limits<uint32_t>::max(), std::numeric_limits<uint32_t>::max(), NetworkMutexType::Shared, [this](std::shared_ptr<Message> message) {
|
// firmware supports clientid/mutex
|
||||||
auto netMutexMsg = std::static_pointer_cast<NetworkMutexMessage>(message);
|
networkMutexCallbackHandle = lockAllNetworks(std::numeric_limits<uint32_t>::max(), std::numeric_limits<uint32_t>::max(), NetworkMutexType::Shared, [this](std::shared_ptr<Message> message) {
|
||||||
if(netMutexMsg->networks.size() && netMutexMsg->event.has_value()) {
|
auto netMutexMsg = std::static_pointer_cast<NetworkMutexMessage>(message);
|
||||||
switch(*netMutexMsg->event) {
|
if(netMutexMsg->networks.size() && netMutexMsg->event.has_value()) {
|
||||||
case NetworkMutexEvent::Acquired:
|
switch(*netMutexMsg->event) {
|
||||||
lockedNetworks.emplace(*netMutexMsg->networks.begin());
|
case NetworkMutexEvent::Acquired:
|
||||||
break;
|
lockedNetworks.emplace(*netMutexMsg->networks.begin());
|
||||||
case NetworkMutexEvent::Released: {
|
break;
|
||||||
auto it = lockedNetworks.find(*netMutexMsg->networks.begin());
|
case NetworkMutexEvent::Released: {
|
||||||
if (it != lockedNetworks.end())
|
auto it = lockedNetworks.find(*netMutexMsg->networks.begin());
|
||||||
lockedNetworks.erase(it);
|
if (it != lockedNetworks.end())
|
||||||
break;
|
lockedNetworks.erase(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
);
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// (re)start the keeponline
|
// (re)start the keeponline
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue