From ea45e341eec169126a9e28b269209d7b8691d76e Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 20 Jun 2017 14:31:27 -0700 Subject: [PATCH] send upstream nodes down to avatar/audio --- assignment-client/src/audio/AudioMixer.cpp | 5 ++++- assignment-client/src/avatars/AvatarMixer.cpp | 5 ++++- domain-server/src/DomainServer.cpp | 3 ++- libraries/networking/src/LimitedNodeList.cpp | 4 ++-- libraries/networking/src/NodeList.cpp | 4 ++-- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index ab4b20b9cc..81bae49594 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -389,7 +389,10 @@ void AudioMixer::start() { auto nodeList = DependencyManager::get(); // prepare the NodeList - nodeList->addSetOfNodeTypesToNodeInterestSet({ NodeType::Agent, NodeType::DownstreamAudioMixer, NodeType::EntityScriptServer }); + nodeList->addSetOfNodeTypesToNodeInterestSet({ + NodeType::Agent, NodeType::EntityScriptServer, + NodeType::UpstreamAudioMixer, NodeType::UpstreamAvatarMixer + }); nodeList->linkedDataCreateCallback = [&](Node* node) { getOrCreateClientData(node); }; // parse out any AudioMixer settings diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 28ede7a77d..4148bb3730 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -862,7 +862,10 @@ AvatarMixerClientData* AvatarMixer::getOrCreateClientData(SharedNodePointer node void AvatarMixer::domainSettingsRequestComplete() { auto nodeList = DependencyManager::get(); - nodeList->addSetOfNodeTypesToNodeInterestSet({ NodeType::Agent, NodeType::DownstreamAvatarMixer, NodeType::EntityScriptServer }); + nodeList->addSetOfNodeTypesToNodeInterestSet({ + NodeType::Agent, NodeType::EntityScriptServer, + NodeType::UpstreamAvatarMixer, NodeType::DownstreamAvatarMixer + }); // parse the settings to pull out the values we need parseDomainServerSettings(nodeList->getDomainHandler().getSettingsObject()); diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index dd0d58570b..276206f37d 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -2302,7 +2302,8 @@ void DomainServer::updateReplicationNodes(ReplicationServerDirection direction) if (!knownNode) { // manually add the replication node to our node list auto node = nodeList->addOrUpdateNode(QUuid::createUuid(), replicationServer.nodeType, - replicationServer.sockAddr, replicationServer.sockAddr); + replicationServer.sockAddr, replicationServer.sockAddr, + false, direction == Upstream); node->setIsForcedNeverSilent(true); qDebug() << "Adding" << (direction == Upstream ? "upstream" : "downstream") diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index d2bae28820..afff71ba23 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -583,14 +583,14 @@ SharedNodePointer LimitedNodeList::addOrUpdateNode(const QUuid& uuid, NodeType_t matchingNode->setPermissions(permissions); matchingNode->setConnectionSecret(connectionSecret); matchingNode->setIsReplicated(isReplicated); - matchingNode->setIsUpstream(isUpstream); + matchingNode->setIsUpstream(isUpstream || NodeType::isUpstream(nodeType)); return matchingNode; } else { // we didn't have this node, so add them Node* newNode = new Node(uuid, nodeType, publicSocket, localSocket); newNode->setIsReplicated(isReplicated); - newNode->setIsUpstream(isUpstream); + newNode->setIsUpstream(isUpstream || NodeType::isUpstream(nodeType)); newNode->setConnectionSecret(connectionSecret); newNode->setPermissions(permissions); diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index f502cb2a3c..423763b3d4 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -669,8 +669,8 @@ void NodeList::parseNodeFromPacketStream(QDataStream& packetStream) { SharedNodePointer node = addOrUpdateNode(nodeUUID, nodeType, nodePublicSocket, nodeLocalSocket, isReplicated, false, connectionUUID, permissions); - // nodes that are downstream of our own type are kept alive when we hear about them from the domain server - if (node->getType() == NodeType::downstreamType(_ownerType)) { + // nodes that are downstream or upstream of our own type are kept alive when we hear about them from the domain server + if (node->getType() == NodeType::downstreamType(_ownerType) || node->getType() == NodeType::upstreamType(_ownerType)) { node->setLastHeardMicrostamp(usecTimestampNow()); } }