mirror of
https://github.com/overte-org/overte.git
synced 2025-04-19 15:43:50 +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::MuteEnvironment, this, "handleMuteEnvironmentPacket");
|
||||
packetReceiver.registerListener(PacketType::NodeIgnoreRequest, this, "handleNodeIgnoreRequestPacket");
|
||||
packetReceiver.registerListener(PacketType::NodeUnignoreRequest, this, "handleNodeUnignoreRequestPacket");
|
||||
packetReceiver.registerListener(PacketType::KillAvatar, this, "handleKillAvatarPacket");
|
||||
packetReceiver.registerListener(PacketType::NodeMuteRequest, this, "handleNodeMuteRequestPacket");
|
||||
packetReceiver.registerListener(PacketType::RadiusIgnoreRequest, this, "handleRadiusIgnoreRequestPacket");
|
||||
|
@ -225,6 +226,10 @@ void AudioMixer::handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage> p
|
|||
sendingNode->parseIgnoreRequestMessage(packet);
|
||||
}
|
||||
|
||||
void AudioMixer::handleNodeUnignoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
||||
sendingNode->parseUnignoreRequestMessage(packet);
|
||||
}
|
||||
|
||||
void AudioMixer::handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
||||
sendingNode->parseIgnoreRadiusRequestMessage(packet);
|
||||
}
|
||||
|
|
|
@ -62,6 +62,7 @@ private slots:
|
|||
void handleNegotiateAudioFormat(QSharedPointer<ReceivedMessage> message, SharedNodePointer sendingNode);
|
||||
void handleNodeKilled(SharedNodePointer killedNode);
|
||||
void handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||
void handleNodeUnignoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||
void handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||
void handleKillAvatarPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||
void handleNodeMuteRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||
|
|
|
@ -585,6 +585,9 @@ void AvatarMixer::handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage>
|
|||
senderNode->parseIgnoreRequestMessage(message);
|
||||
}
|
||||
|
||||
void AvatarMixer::handleNodeUnignoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
||||
sendingNode->parseUnignoreRequestMessage(packet);
|
||||
}
|
||||
void AvatarMixer::handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode) {
|
||||
sendingNode->parseIgnoreRadiusRequestMessage(packet);
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ private slots:
|
|||
void handleAvatarIdentityPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||
void handleKillAvatarPacket(QSharedPointer<ReceivedMessage> message);
|
||||
void handleNodeIgnoreRequestPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||
void handleNodeUnignoreRequestPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||
void handleRadiusIgnoreRequestPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||
void handleRequestDomainListDataPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||
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) {
|
||||
if (!otherNodeID.isNull() && otherNodeID != _uuid) {
|
||||
QReadLocker lock { &_ignoredNodeIDSetLock };
|
||||
qCDebug(networking) << "Adding" << uuidStringWithoutCurlyBraces(otherNodeID) << "to ignore set for"
|
||||
<< 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) {
|
||||
bool enabled;
|
||||
message->readPrimitive(&enabled);
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include <QtCore/QSharedPointer>
|
||||
#include <QtCore/QUuid>
|
||||
|
||||
#include <QReadLocker>
|
||||
#include <UUIDHasher.h>
|
||||
|
||||
#include <tbb/concurrent_unordered_set.h>
|
||||
|
@ -72,8 +73,10 @@ public:
|
|||
bool getCanKick() const { return _permissions.can(NodePermissions::Permission::canKick); }
|
||||
|
||||
void parseIgnoreRequestMessage(QSharedPointer<ReceivedMessage> message);
|
||||
void parseUnignoreRequestMessage(QSharedPointer<ReceivedMessage> message);
|
||||
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);
|
||||
|
||||
friend QDataStream& operator<<(QDataStream& out, const Node& node);
|
||||
|
@ -97,6 +100,7 @@ private:
|
|||
MovingPercentile _clockSkewMovingPercentile;
|
||||
NodePermissions _permissions;
|
||||
tbb::concurrent_unordered_set<QUuid, UUIDHasher> _ignoredNodeIDSet;
|
||||
mutable QReadWriteLock _ignoredNodeIDSetLock;
|
||||
|
||||
std::atomic_bool _ignoreRadiusEnabled;
|
||||
};
|
||||
|
|
|
@ -105,7 +105,8 @@ public:
|
|||
UsernameFromIDReply,
|
||||
ViewFrustum,
|
||||
RequestDomainListData,
|
||||
LAST_PACKET_TYPE = ViewFrustum // FIXME! RequestDomainListData
|
||||
NodeUnignoreRequest,
|
||||
LAST_PACKET_TYPE = ViewFrustum // FIXME! NodeUnignoreRequest
|
||||
};
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue