mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-05 14:53:11 +02:00
Add packet handling to OctreeServer
This commit is contained in:
parent
1ee7a83927
commit
09f978207b
2 changed files with 41 additions and 0 deletions
|
@ -247,6 +247,11 @@ OctreeServer::OctreeServer(const QByteArray& packet) :
|
|||
// make sure the AccountManager has an Auth URL for payment redemptions
|
||||
|
||||
AccountManager::getInstance().setAuthURL(NetworkingConstants::METAVERSE_SERVER_URL);
|
||||
|
||||
auto packetReceiver = DependencyManager::get<NodeList>()->getPacketReceiver();
|
||||
packetReceiver->registerPacketListener(getMyQueryMessageType(), this, "handleOctreeQueryPacket");
|
||||
packetReceiver->registerPacketListener(PacketType::OctreeDataNack, this, "handleOctreeDataNackPacket");
|
||||
packetReceiver->registerPacketListener(PacketType::JurisdictionRequest, this, "handleJurisdictionRequestPacket");
|
||||
}
|
||||
|
||||
OctreeServer::~OctreeServer() {
|
||||
|
@ -855,6 +860,37 @@ void OctreeServer::readPendingDatagram(const QByteArray& receivedPacket, const H
|
|||
}
|
||||
}
|
||||
|
||||
void handleOctreeQueryPacket(QSharedPointer<NLPacket> packet, HifiSockAddr senderSockAddr) {
|
||||
// If we got a query packet, then we're talking to an agent, and we
|
||||
// need to make sure we have it in our nodeList.
|
||||
SharedNodePointer matchingNode = nodeList->nodeWithUUID(packet->getSourceID());
|
||||
if (matchingNode) {
|
||||
nodeList->updateNodeWithDataFromPacket(matchingNode, packet->getData());
|
||||
|
||||
OctreeQueryNode* nodeData = (OctreeQueryNode*) matchingNode->getLinkedData();
|
||||
if (nodeData && !nodeData->isOctreeSendThreadInitalized()) {
|
||||
nodeData->initializeOctreeSendThread(this, matchingNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void handleOctreeDataNackPacket(QSharedPointer<NLPacket> packet, HifiSockAddr senderSockAddr) {
|
||||
// If we got a nack packet, then we're talking to an agent, and we
|
||||
// need to make sure we have it in our nodeList.
|
||||
SharedNodePointer matchingNode = nodeList->nodeWithUUID(packet->getSourceID());
|
||||
if (matchingNode) {
|
||||
OctreeQueryNode* nodeData = (OctreeQueryNode*)matchingNode->getLinkedData();
|
||||
if (nodeData) {
|
||||
nodeData->parseNackPacket(packet->getData());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void handleJurisdictionRequestPacket(QSharedPointer<NLPacket> packet, HifiSockAddr senderSockAddr) {
|
||||
SharedNodePointer matchingNode = nodeList->nodeWithUUID(packet->getSourceID());
|
||||
_jurisdictionSender->queueReceivedPacket(matchingNode, packet->getData());
|
||||
}
|
||||
|
||||
void OctreeServer::setupDatagramProcessingThread() {
|
||||
auto nodeList = DependencyManager::get<NodeList>();
|
||||
|
||||
|
|
|
@ -128,6 +128,11 @@ public slots:
|
|||
void readPendingDatagrams() { }; // this will not be called since our datagram processing thread will handle
|
||||
void readPendingDatagram(const QByteArray& receivedPacket, const HifiSockAddr& senderSockAddr);
|
||||
|
||||
private slots:
|
||||
void handleOctreeQueryPacket(QSharedPointer<NLPacket> packet, HifiSockAddr senderSockAddr);
|
||||
void handleOctreeDataNackPacket(QSharedPointer<NLPacket> packet, HifiSockAddr senderSockAddr);
|
||||
void handleJurisdictionRequestPacket(QSharedPointer<NLPacket> packet, HifiSockAddr senderSockAddr);
|
||||
|
||||
protected:
|
||||
virtual Octree* createTree() = 0;
|
||||
bool readOptionBool(const QString& optionName, const QJsonObject& settingsSectionObject, bool& result);
|
||||
|
|
Loading…
Reference in a new issue