only send identity packets directly to agents not upstream

This commit is contained in:
Stephen Birarda 2017-06-13 15:29:12 -07:00
parent dc94f83591
commit 01263d9435
2 changed files with 19 additions and 13 deletions

View file

@ -126,12 +126,14 @@ AvatarMixer::~AvatarMixer() {
} }
void AvatarMixer::sendIdentityPacket(AvatarMixerClientData* nodeData, const SharedNodePointer& destinationNode) { void AvatarMixer::sendIdentityPacket(AvatarMixerClientData* nodeData, const SharedNodePointer& destinationNode) {
QByteArray individualData = nodeData->getAvatar().identityByteArray(); if (destinationNode->getType() == NodeType::DownstreamAvatarMixer || !destinationNode->isUpstream()) {
individualData.replace(0, NUM_BYTES_RFC4122_UUID, nodeData->getNodeID().toRfc4122()); QByteArray individualData = nodeData->getAvatar().identityByteArray();
auto identityPackets = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true); individualData.replace(0, NUM_BYTES_RFC4122_UUID, nodeData->getNodeID().toRfc4122());
identityPackets->write(individualData); auto identityPackets = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true);
DependencyManager::get<NodeList>()->sendPacketList(std::move(identityPackets), *destinationNode); identityPackets->write(individualData);
++_sumIdentityPackets; DependencyManager::get<NodeList>()->sendPacketList(std::move(identityPackets), *destinationNode);
++_sumIdentityPackets;
}
} }
std::chrono::microseconds AvatarMixer::timeFrame(p_high_resolution_clock::time_point& timestamp) { std::chrono::microseconds AvatarMixer::timeFrame(p_high_resolution_clock::time_point& timestamp) {

View file

@ -67,13 +67,17 @@ void AvatarMixerSlave::processIncomingPackets(const SharedNodePointer& node) {
int AvatarMixerSlave::sendIdentityPacket(const AvatarMixerClientData* nodeData, const SharedNodePointer& destinationNode) { int AvatarMixerSlave::sendIdentityPacket(const AvatarMixerClientData* nodeData, const SharedNodePointer& destinationNode) {
QByteArray individualData = nodeData->getConstAvatarData()->identityByteArray(); if (destinationNode->getType() == NodeType::DownstreamAvatarMixer || !destinationNode->isUpstream()) {
individualData.replace(0, NUM_BYTES_RFC4122_UUID, nodeData->getNodeID().toRfc4122()); // FIXME, this looks suspicious QByteArray individualData = nodeData->getConstAvatarData()->identityByteArray();
auto identityPackets = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true); individualData.replace(0, NUM_BYTES_RFC4122_UUID, nodeData->getNodeID().toRfc4122()); // FIXME, this looks suspicious
identityPackets->write(individualData); auto identityPackets = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true);
DependencyManager::get<NodeList>()->sendPacketList(std::move(identityPackets), *destinationNode); identityPackets->write(individualData);
_stats.numIdentityPackets++; DependencyManager::get<NodeList>()->sendPacketList(std::move(identityPackets), *destinationNode);
return individualData.size(); _stats.numIdentityPackets++;
return individualData.size();
} else {
return -1;
}
} }
static const int AVATAR_MIXER_BROADCAST_FRAMES_PER_SECOND = 45; static const int AVATAR_MIXER_BROADCAST_FRAMES_PER_SECOND = 45;