mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 00:36:30 +02:00
unignore checkpoint (untested)
This commit is contained in:
parent
0ad9786f6b
commit
344272f24a
7 changed files with 37 additions and 2 deletions
|
@ -65,6 +65,7 @@ AudioMixer::AudioMixer(ReceivedMessage& message) :
|
||||||
packetReceiver.registerListener(PacketType::NegotiateAudioFormat, this, "handleNegotiateAudioFormat");
|
packetReceiver.registerListener(PacketType::NegotiateAudioFormat, this, "handleNegotiateAudioFormat");
|
||||||
packetReceiver.registerListener(PacketType::MuteEnvironment, this, "handleMuteEnvironmentPacket");
|
packetReceiver.registerListener(PacketType::MuteEnvironment, this, "handleMuteEnvironmentPacket");
|
||||||
packetReceiver.registerListener(PacketType::NodeIgnoreRequest, this, "handleNodeIgnoreRequestPacket");
|
packetReceiver.registerListener(PacketType::NodeIgnoreRequest, this, "handleNodeIgnoreRequestPacket");
|
||||||
|
packetReceiver.registerListener(PacketType::NodeUnignoreRequest, this, "handleNodeUnignoreRequestPacket");
|
||||||
packetReceiver.registerListener(PacketType::KillAvatar, this, "handleKillAvatarPacket");
|
packetReceiver.registerListener(PacketType::KillAvatar, this, "handleKillAvatarPacket");
|
||||||
packetReceiver.registerListener(PacketType::NodeMuteRequest, this, "handleNodeMuteRequestPacket");
|
packetReceiver.registerListener(PacketType::NodeMuteRequest, this, "handleNodeMuteRequestPacket");
|
||||||
packetReceiver.registerListener(PacketType::RadiusIgnoreRequest, this, "handleRadiusIgnoreRequestPacket");
|
packetReceiver.registerListener(PacketType::RadiusIgnoreRequest, this, "handleRadiusIgnoreRequestPacket");
|
||||||
|
@ -225,6 +226,10 @@ void AudioMixer::handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage> p
|
||||||
sendingNode->parseIgnoreRequestMessage(packet);
|
sendingNode->parseIgnoreRequestMessage(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AudioMixer::handleNodeUnignoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
||||||
|
sendingNode->parseUnignoreRequestMessage(packet);
|
||||||
|
}
|
||||||
|
|
||||||
void AudioMixer::handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
void AudioMixer::handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
||||||
sendingNode->parseIgnoreRadiusRequestMessage(packet);
|
sendingNode->parseIgnoreRadiusRequestMessage(packet);
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,7 @@ private slots:
|
||||||
void handleNegotiateAudioFormat(QSharedPointer<ReceivedMessage> message, SharedNodePointer sendingNode);
|
void handleNegotiateAudioFormat(QSharedPointer<ReceivedMessage> message, SharedNodePointer sendingNode);
|
||||||
void handleNodeKilled(SharedNodePointer killedNode);
|
void handleNodeKilled(SharedNodePointer killedNode);
|
||||||
void handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
void handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||||
|
void handleNodeUnignoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||||
void handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
void handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||||
void handleKillAvatarPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
void handleKillAvatarPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||||
void handleNodeMuteRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
void handleNodeMuteRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||||
|
|
|
@ -585,6 +585,9 @@ void AvatarMixer::handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage>
|
||||||
senderNode->parseIgnoreRequestMessage(message);
|
senderNode->parseIgnoreRequestMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AvatarMixer::handleNodeUnignoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
||||||
|
sendingNode->parseUnignoreRequestMessage(packet);
|
||||||
|
}
|
||||||
void AvatarMixer::handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
void AvatarMixer::handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
||||||
sendingNode->parseIgnoreRadiusRequestMessage(packet);
|
sendingNode->parseIgnoreRadiusRequestMessage(packet);
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ private slots:
|
||||||
void handleAvatarIdentityPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
void handleAvatarIdentityPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||||
void handleKillAvatarPacket(QSharedPointer<ReceivedMessage> message);
|
void handleKillAvatarPacket(QSharedPointer<ReceivedMessage> message);
|
||||||
void handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
void handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||||
|
void handleNodeUnignoreRequestPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||||
void handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
void handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||||
void handleRequestDomainListDataPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
void handleRequestDomainListDataPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||||
void domainSettingsRequestComplete();
|
void domainSettingsRequestComplete();
|
||||||
|
|
|
@ -90,8 +90,14 @@ void Node::parseIgnoreRequestMessage(QSharedPointer<ReceivedMessage> message) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Node::parseUnignoreRequestMessage(QSharedPointer<ReceivedMessage> message) {
|
||||||
|
QUuid ignoredUUID = QUuid::fromRfc4122(message->readWithoutCopy(NUM_BYTES_RFC4122_UUID));
|
||||||
|
removeIgnoredNode(ignoredUUID);
|
||||||
|
}
|
||||||
|
|
||||||
void Node::addIgnoredNode(const QUuid& otherNodeID) {
|
void Node::addIgnoredNode(const QUuid& otherNodeID) {
|
||||||
if (!otherNodeID.isNull() && otherNodeID != _uuid) {
|
if (!otherNodeID.isNull() && otherNodeID != _uuid) {
|
||||||
|
QReadLocker lock { &_ignoredNodeIDSetLock };
|
||||||
qCDebug(networking) << "Adding" << uuidStringWithoutCurlyBraces(otherNodeID) << "to ignore set for"
|
qCDebug(networking) << "Adding" << uuidStringWithoutCurlyBraces(otherNodeID) << "to ignore set for"
|
||||||
<< uuidStringWithoutCurlyBraces(_uuid);
|
<< uuidStringWithoutCurlyBraces(_uuid);
|
||||||
|
|
||||||
|
@ -102,6 +108,20 @@ void Node::addIgnoredNode(const QUuid& otherNodeID) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Node::removeIgnoredNode(const QUuid& otherNodeID) {
|
||||||
|
if (!otherNodeID.isNull() && otherNodeID != _uuid) {
|
||||||
|
// insert/find are read locked concurrently. unsafe_erase is not concurrent, and needs a write lock.
|
||||||
|
QWriteLocker lock { &_ignoredNodeIDSetLock };
|
||||||
|
qCDebug(networking) << "Removing" << uuidStringWithoutCurlyBraces(otherNodeID) << "from ignore set for"
|
||||||
|
<< uuidStringWithoutCurlyBraces(_uuid);
|
||||||
|
|
||||||
|
// remove the session UUID from the set of ignored ones for this listening node
|
||||||
|
_ignoredNodeIDSet.unsafe_erase(otherNodeID);
|
||||||
|
} else {
|
||||||
|
qCWarning(networking) << "Node::addIgnoredNode called with null ID or ID of ignoring node.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Node::parseIgnoreRadiusRequestMessage(QSharedPointer<ReceivedMessage> message) {
|
void Node::parseIgnoreRadiusRequestMessage(QSharedPointer<ReceivedMessage> message) {
|
||||||
bool enabled;
|
bool enabled;
|
||||||
message->readPrimitive(&enabled);
|
message->readPrimitive(&enabled);
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <QtCore/QSharedPointer>
|
#include <QtCore/QSharedPointer>
|
||||||
#include <QtCore/QUuid>
|
#include <QtCore/QUuid>
|
||||||
|
|
||||||
|
#include <QReadLocker>
|
||||||
#include <UUIDHasher.h>
|
#include <UUIDHasher.h>
|
||||||
|
|
||||||
#include <tbb/concurrent_unordered_set.h>
|
#include <tbb/concurrent_unordered_set.h>
|
||||||
|
@ -72,8 +73,10 @@ public:
|
||||||
bool getCanKick() const { return _permissions.can(NodePermissions::Permission::canKick); }
|
bool getCanKick() const { return _permissions.can(NodePermissions::Permission::canKick); }
|
||||||
|
|
||||||
void parseIgnoreRequestMessage(QSharedPointer<ReceivedMessage> message);
|
void parseIgnoreRequestMessage(QSharedPointer<ReceivedMessage> message);
|
||||||
|
void parseUnignoreRequestMessage(QSharedPointer<ReceivedMessage> message);
|
||||||
void addIgnoredNode(const QUuid& otherNodeID);
|
void addIgnoredNode(const QUuid& otherNodeID);
|
||||||
bool isIgnoringNodeWithID(const QUuid& nodeID) const { return _ignoredNodeIDSet.find(nodeID) != _ignoredNodeIDSet.cend(); }
|
void removeIgnoredNode(const QUuid& otherNodeID);
|
||||||
|
bool isIgnoringNodeWithID(const QUuid& nodeID) const { QReadLocker lock { &_ignoredNodeIDSetLock }; return _ignoredNodeIDSet.find(nodeID) != _ignoredNodeIDSet.cend(); }
|
||||||
void parseIgnoreRadiusRequestMessage(QSharedPointer<ReceivedMessage> message);
|
void parseIgnoreRadiusRequestMessage(QSharedPointer<ReceivedMessage> message);
|
||||||
|
|
||||||
friend QDataStream& operator<<(QDataStream& out, const Node& node);
|
friend QDataStream& operator<<(QDataStream& out, const Node& node);
|
||||||
|
@ -97,6 +100,7 @@ private:
|
||||||
MovingPercentile _clockSkewMovingPercentile;
|
MovingPercentile _clockSkewMovingPercentile;
|
||||||
NodePermissions _permissions;
|
NodePermissions _permissions;
|
||||||
tbb::concurrent_unordered_set<QUuid, UUIDHasher> _ignoredNodeIDSet;
|
tbb::concurrent_unordered_set<QUuid, UUIDHasher> _ignoredNodeIDSet;
|
||||||
|
mutable QReadWriteLock _ignoredNodeIDSetLock;
|
||||||
|
|
||||||
std::atomic_bool _ignoreRadiusEnabled;
|
std::atomic_bool _ignoreRadiusEnabled;
|
||||||
};
|
};
|
||||||
|
|
|
@ -105,7 +105,8 @@ public:
|
||||||
UsernameFromIDReply,
|
UsernameFromIDReply,
|
||||||
ViewFrustum,
|
ViewFrustum,
|
||||||
RequestDomainListData,
|
RequestDomainListData,
|
||||||
LAST_PACKET_TYPE = ViewFrustum // FIXME! RequestDomainListData
|
NodeUnignoreRequest,
|
||||||
|
LAST_PACKET_TYPE = ViewFrustum // FIXME! NodeUnignoreRequest
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue