mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 03:58:15 +02:00
Update PacketReceiver to use scoped locks
This commit is contained in:
parent
92dadb437c
commit
cda0aaf7cf
1 changed files with 14 additions and 15 deletions
|
@ -12,6 +12,8 @@
|
||||||
|
|
||||||
#include "PacketReceiver.h"
|
#include "PacketReceiver.h"
|
||||||
|
|
||||||
|
#include <QMutexLocker>
|
||||||
|
|
||||||
#include "DependencyManager.h"
|
#include "DependencyManager.h"
|
||||||
#include "NetworkLogging.h"
|
#include "NetworkLogging.h"
|
||||||
#include "NodeList.h"
|
#include "NodeList.h"
|
||||||
|
@ -93,8 +95,7 @@ bool PacketReceiver::registerMessageListener(PacketType type, QObject* listener,
|
||||||
QMetaMethod matchingMethod = matchingMethodForListener(type, listener, slot);
|
QMetaMethod matchingMethod = matchingMethodForListener(type, listener, slot);
|
||||||
|
|
||||||
if (matchingMethod.isValid()) {
|
if (matchingMethod.isValid()) {
|
||||||
//registerVerifiedListener(type, listener, matchingMethod);
|
QMutexLocker(&_packetListenerLock);
|
||||||
_packetListenerLock.lock();
|
|
||||||
|
|
||||||
if (_packetListListenerMap.contains(type)) {
|
if (_packetListListenerMap.contains(type)) {
|
||||||
qDebug() << "Warning: Registering a packet listener for packet type" << type
|
qDebug() << "Warning: Registering a packet listener for packet type" << type
|
||||||
|
@ -104,7 +105,6 @@ bool PacketReceiver::registerMessageListener(PacketType type, QObject* listener,
|
||||||
// add the mapping
|
// add the mapping
|
||||||
_packetListListenerMap[type] = ObjectMethodPair(QPointer<QObject>(listener), matchingMethod);
|
_packetListListenerMap[type] = ObjectMethodPair(QPointer<QObject>(listener), matchingMethod);
|
||||||
|
|
||||||
_packetListenerLock.unlock();
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
@ -244,7 +244,7 @@ void PacketReceiver::handleVerifiedPacketList(std::unique_ptr<udt::PacketList> p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_packetListenerLock.lock();
|
QMutexLocker packetListenerLocker(&_packetListenerLock);
|
||||||
|
|
||||||
bool listenerIsDead = false;
|
bool listenerIsDead = false;
|
||||||
|
|
||||||
|
@ -258,13 +258,13 @@ void PacketReceiver::handleVerifiedPacketList(std::unique_ptr<udt::PacketList> p
|
||||||
|
|
||||||
bool success = false;
|
bool success = false;
|
||||||
|
|
||||||
|
Qt::ConnectionType connectionType;
|
||||||
// check if this is a directly connected listener
|
// check if this is a directly connected listener
|
||||||
_directConnectSetMutex.lock();
|
{
|
||||||
|
QMutexLocker directConnectLocker(&_directConnectSetMutex);
|
||||||
Qt::ConnectionType connectionType =
|
|
||||||
_directlyConnectedObjects.contains(listener.first) ? Qt::DirectConnection : Qt::AutoConnection;
|
connectionType = _directlyConnectedObjects.contains(listener.first) ? Qt::DirectConnection : Qt::AutoConnection;
|
||||||
|
}
|
||||||
_directConnectSetMutex.unlock();
|
|
||||||
|
|
||||||
PacketType packetType = nlPacketList->getType();
|
PacketType packetType = nlPacketList->getType();
|
||||||
|
|
||||||
|
@ -329,9 +329,10 @@ void PacketReceiver::handleVerifiedPacketList(std::unique_ptr<udt::PacketList> p
|
||||||
it = _packetListListenerMap.erase(it);
|
it = _packetListListenerMap.erase(it);
|
||||||
|
|
||||||
// if it exists, remove the listener from _directlyConnectedObjects
|
// if it exists, remove the listener from _directlyConnectedObjects
|
||||||
_directConnectSetMutex.lock();
|
{
|
||||||
_directlyConnectedObjects.remove(listener.first);
|
QMutexLocker directConnectLocker(&_directConnectSetMutex);
|
||||||
_directConnectSetMutex.unlock();
|
_directlyConnectedObjects.remove(listener.first);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (it == _packetListListenerMap.end()) {
|
} else if (it == _packetListListenerMap.end()) {
|
||||||
|
@ -340,8 +341,6 @@ void PacketReceiver::handleVerifiedPacketList(std::unique_ptr<udt::PacketList> p
|
||||||
// insert a dummy listener so we don't print this again
|
// insert a dummy listener so we don't print this again
|
||||||
_packetListListenerMap.insert(nlPacketList->getType(), { nullptr, QMetaMethod() });
|
_packetListListenerMap.insert(nlPacketList->getType(), { nullptr, QMetaMethod() });
|
||||||
}
|
}
|
||||||
|
|
||||||
_packetListenerLock.unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PacketReceiver::handleVerifiedPacket(std::unique_ptr<udt::Packet> packet) {
|
void PacketReceiver::handleVerifiedPacket(std::unique_ptr<udt::Packet> packet) {
|
||||||
|
|
Loading…
Reference in a new issue