Local IDs - Reviewer's suggested improvements

This commit is contained in:
Simon Walton 2018-03-30 17:27:52 -07:00
parent e9ec4df36f
commit 734b48eee0
4 changed files with 11 additions and 29 deletions

View file

@ -137,7 +137,7 @@ void AudioMixer::queueReplicatedAudioPacket(QSharedPointer<ReceivedMessage> mess
auto replicatedMessage = QSharedPointer<ReceivedMessage>::create(audioData, rewrittenType, auto replicatedMessage = QSharedPointer<ReceivedMessage>::create(audioData, rewrittenType,
versionForPacketType(rewrittenType), versionForPacketType(rewrittenType),
message->getSenderSockAddr(), nodeList->getSessionLocalID()); message->getSenderSockAddr(), message->getSourceID());
getOrCreateClientData(replicatedNode.data())->queuePacket(replicatedMessage, replicatedNode); getOrCreateClientData(replicatedNode.data())->queuePacket(replicatedMessage, replicatedNode);
} }

View file

@ -132,6 +132,7 @@ void LimitedNodeList::setSessionUUID(const QUuid& sessionUUID) {
} }
Node::LocalID LimitedNodeList::getSessionLocalID() const { Node::LocalID LimitedNodeList::getSessionLocalID() const {
QReadLocker readLock { &_sessionUUIDLock };
return _sessionLocalID; return _sessionLocalID;
} }
@ -578,7 +579,7 @@ void LimitedNodeList::eraseAllNodes() {
// and then remove them from the hash // and then remove them from the hash
QWriteLocker writeLocker(&_nodeMutex); QWriteLocker writeLocker(&_nodeMutex);
_localIDMap.erase(_localIDMap.begin(), _localIDMap.end()); _localIDMap.clear();
if (_nodeHash.size() > 0) { if (_nodeHash.size() > 0) {
qCDebug(networking) << "LimitedNodeList::eraseAllNodes() removing all nodes from NodeList."; qCDebug(networking) << "LimitedNodeList::eraseAllNodes() removing all nodes from NodeList.";
@ -851,9 +852,10 @@ void LimitedNodeList::removeSilentNodes() {
}); });
foreach(const SharedNodePointer& killedNode, killedNodes) { foreach(const SharedNodePointer& killedNode, killedNodes) {
_nodeMutex.lockForWrite(); {
_localIDMap.erase(killedNode->getLocalID()); QWriteLocker writeLock { &_nodeMutex };
_nodeMutex.unlock(); _localIDMap.erase(killedNode->getLocalID());
}
handleNodeKill(killedNode); handleNodeKill(killedNode);
} }
} }

View file

@ -22,7 +22,7 @@ class NLPacket : public udt::Packet {
Q_OBJECT Q_OBJECT
public: public:
// //
// Current NLPacket format: // NLPacket format:
// //
// | BYTE | BYTE | BYTE | BYTE | // | BYTE | BYTE | BYTE | BYTE |
// 0 1 2 3 // 0 1 2 3
@ -35,28 +35,6 @@ public:
// | (ONLY FOR VERIFIED PACKETS) | // | (ONLY FOR VERIFIED PACKETS) |
// | | // | |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Old NLPacket format:
//
// | BYTE | BYTE | BYTE | BYTE |
//
// 0 1 2 3
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | Packet Type | Version | |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
// | |
// | Node UUID - 16 bytes |
// | (ONLY FOR SOURCED PACKETS) |
// | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | | |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
// | |
// | MD5 Verification - 16 bytes |
// | (ONLY FOR VERIFIED PACKETS) |
// | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// | | |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
// //
using LocalID = NetworkLocalID; using LocalID = NetworkLocalID;

View file

@ -261,7 +261,9 @@ void PacketReceiver::handleVerifiedMessage(QSharedPointer<ReceivedMessage> recei
SharedNodePointer matchingNode; SharedNodePointer matchingNode;
matchingNode = nodeList->nodeWithLocalID(receivedMessage->getSourceID()); if (receivedMessage->getSourceID() != 0) {
matchingNode = nodeList->nodeWithLocalID(receivedMessage->getSourceID());
}
QMutexLocker packetListenerLocker(&_packetListenerLock); QMutexLocker packetListenerLocker(&_packetListenerLock);
auto it = _messageListenerMap.find(receivedMessage->getType()); auto it = _messageListenerMap.find(receivedMessage->getType());