From a1a4a3db8a1aa7cce6ca5c5075bd3fcfa86a2732 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 7 Feb 2014 14:27:10 -0800 Subject: [PATCH] HifiSockAddr to SharedNodePointer changes in MetavoxelServer --- .../src/metavoxels/MetavoxelServer.cpp | 34 +++++++++++-------- .../src/metavoxels/MetavoxelServer.h | 8 ++--- interface/src/MetavoxelSystem.cpp | 4 +-- interface/src/MetavoxelSystem.h | 2 +- libraries/metavoxels/src/MetavoxelUtil.cpp | 4 +-- libraries/metavoxels/src/MetavoxelUtil.h | 3 +- libraries/shared/src/DataServerClient.cpp | 2 +- 7 files changed, 31 insertions(+), 26 deletions(-) diff --git a/assignment-client/src/metavoxels/MetavoxelServer.cpp b/assignment-client/src/metavoxels/MetavoxelServer.cpp index 4df72f5de9..fa934142d3 100644 --- a/assignment-client/src/metavoxels/MetavoxelServer.cpp +++ b/assignment-client/src/metavoxels/MetavoxelServer.cpp @@ -50,10 +50,13 @@ void MetavoxelServer::readPendingDatagrams() { while (readAvailableDatagram(receivedPacket, senderSockAddr)) { if (nodeList->packetVersionAndHashMatch(receivedPacket)) { switch (packetTypeForPacket(receivedPacket)) { - case PacketTypeMetavoxelData: - processData(receivedPacket, senderSockAddr); + case PacketTypeMetavoxelData: { + SharedNodePointer matchingNode = nodeList->sendingNodeForPacket(receivedPacket); + if (matchingNode) { + processData(receivedPacket, matchingNode); + } break; - + } default: NodeList::getInstance()->processNodeData(senderSockAddr, receivedPacket); break; @@ -76,10 +79,10 @@ void MetavoxelServer::sendDeltas() { _sendTimer.start(qMax(0, 2 * SEND_INTERVAL - elapsed)); } -void MetavoxelServer::processData(const QByteArray& data, const HifiSockAddr& sender) { +void MetavoxelServer::processData(const QByteArray& data, const SharedNodePointer& sendingNode) { // read the session id int headerPlusIDSize; - QUuid sessionID = readSessionID(data, sender, headerPlusIDSize); + QUuid sessionID = readSessionID(data, sendingNode, headerPlusIDSize); if (sessionID.isNull()) { return; } @@ -87,18 +90,19 @@ void MetavoxelServer::processData(const QByteArray& data, const HifiSockAddr& se // forward to session, creating if necessary MetavoxelSession*& session = _sessions[sessionID]; if (!session) { - session = new MetavoxelSession(this, sessionID, QByteArray::fromRawData(data.constData(), headerPlusIDSize), sender); + session = new MetavoxelSession(this, sessionID, QByteArray::fromRawData(data.constData(), headerPlusIDSize), + sendingNode); } - session->receivedData(data, sender); + session->receivedData(data, sendingNode); } MetavoxelSession::MetavoxelSession(MetavoxelServer* server, const QUuid& sessionId, - const QByteArray& datagramHeader, const HifiSockAddr& sender) : + const QByteArray& datagramHeader, const SharedNodePointer& sendingNode) : QObject(server), _server(server), _sessionId(sessionId), _sequencer(datagramHeader), - _sender(sender) { + _sendingNode(sendingNode) { const int TIMEOUT_INTERVAL = 30 * 1000; _timeoutTimer.setInterval(TIMEOUT_INTERVAL); @@ -114,15 +118,15 @@ MetavoxelSession::MetavoxelSession(MetavoxelServer* server, const QUuid& session SendRecord record = { 0 }; _sendRecords.append(record); - qDebug() << "Opened session [sessionId=" << _sessionId << ", sender=" << _sender << "]"; + qDebug() << "Opened session [sessionId=" << _sessionId << ", sendingNode=" << sendingNode << "]"; } -void MetavoxelSession::receivedData(const QByteArray& data, const HifiSockAddr& sender) { +void MetavoxelSession::receivedData(const QByteArray& data, const SharedNodePointer& sendingNode) { // reset the timeout timer _timeoutTimer.start(); // save the most recent sender - _sender = sender; + _sendingNode = sendingNode; // process through sequencer _sequencer.receivedDatagram(data); @@ -140,12 +144,12 @@ void MetavoxelSession::sendDelta() { } void MetavoxelSession::timedOut() { - qDebug() << "Session timed out [sessionId=" << _sessionId << ", sender=" << _sender << "]"; + qDebug() << "Session timed out [sessionId=" << _sessionId << ", sendingNode=" << _sendingNode << "]"; _server->removeSession(_sessionId); } void MetavoxelSession::sendData(const QByteArray& data) { - NodeList::getInstance()->getNodeSocket().writeDatagram(data, _sender.getAddress(), _sender.getPort()); + NodeList::getInstance()->writeDatagram(data, _sendingNode); } void MetavoxelSession::readPacket(Bitstream& in) { @@ -161,7 +165,7 @@ void MetavoxelSession::clearSendRecordsBefore(int index) { void MetavoxelSession::handleMessage(const QVariant& message) { int userType = message.userType(); if (userType == CloseSessionMessage::Type) { - qDebug() << "Session closed [sessionId=" << _sessionId << ", sender=" << _sender << "]"; + qDebug() << "Session closed [sessionId=" << _sessionId << ", sendingNode=" << _sendingNode << "]"; _server->removeSession(_sessionId); } else if (userType == ClientStateMessage::Type) { diff --git a/assignment-client/src/metavoxels/MetavoxelServer.h b/assignment-client/src/metavoxels/MetavoxelServer.h index 5ee861b75d..60fdeca5a5 100644 --- a/assignment-client/src/metavoxels/MetavoxelServer.h +++ b/assignment-client/src/metavoxels/MetavoxelServer.h @@ -47,7 +47,7 @@ private slots: private: - void processData(const QByteArray& data, const HifiSockAddr& sender); + void processData(const QByteArray& data, const SharedNodePointer& sendingNode); QTimer _sendTimer; qint64 _lastSend; @@ -64,9 +64,9 @@ class MetavoxelSession : public QObject { public: MetavoxelSession(MetavoxelServer* server, const QUuid& sessionId, - const QByteArray& datagramHeader, const HifiSockAddr& sender); + const QByteArray& datagramHeader, const SharedNodePointer& sendingNode); - void receivedData(const QByteArray& data, const HifiSockAddr& sender); + void receivedData(const QByteArray& data, const SharedNodePointer& sendingNode); void sendDelta(); @@ -96,7 +96,7 @@ private: QTimer _timeoutTimer; DatagramSequencer _sequencer; - HifiSockAddr _sender; + SharedNodePointer _sendingNode; glm::vec3 _position; diff --git a/interface/src/MetavoxelSystem.cpp b/interface/src/MetavoxelSystem.cpp index b6b45a2f99..34c3be5308 100644 --- a/interface/src/MetavoxelSystem.cpp +++ b/interface/src/MetavoxelSystem.cpp @@ -144,9 +144,9 @@ void MetavoxelSystem::removeClient(const QUuid& uuid) { delete client; } -void MetavoxelSystem::receivedData(const QByteArray& data, const HifiSockAddr& sender) { +void MetavoxelSystem::receivedData(const QByteArray& data, const SharedNodePointer& sendingNode) { int headerPlusIDSize; - QUuid sessionID = readSessionID(data, sender, headerPlusIDSize); + QUuid sessionID = readSessionID(data, sendingNode, headerPlusIDSize); if (sessionID.isNull()) { return; } diff --git a/interface/src/MetavoxelSystem.h b/interface/src/MetavoxelSystem.h index 0956a9d0d3..7bb7935e4d 100644 --- a/interface/src/MetavoxelSystem.h +++ b/interface/src/MetavoxelSystem.h @@ -52,7 +52,7 @@ private: Q_INVOKABLE void addClient(const SharedNodePointer& node); Q_INVOKABLE void removeClient(const QUuid& uuid); - Q_INVOKABLE void receivedData(const QByteArray& data, const HifiSockAddr& sender); + Q_INVOKABLE void receivedData(const QByteArray& data, const SharedNodePointer& sendingNode); class Point { public: diff --git a/libraries/metavoxels/src/MetavoxelUtil.cpp b/libraries/metavoxels/src/MetavoxelUtil.cpp index e762fd06e0..e59cf0fe21 100644 --- a/libraries/metavoxels/src/MetavoxelUtil.cpp +++ b/libraries/metavoxels/src/MetavoxelUtil.cpp @@ -106,7 +106,7 @@ static QItemEditorCreatorBase* qColorEditorCreator = createQColorEditorCreator() static QItemEditorCreatorBase* vec3EditorCreator = createVec3EditorCreator(); static QItemEditorCreatorBase* parameterizedURLEditorCreator = createParameterizedURLEditorCreator(); -QUuid readSessionID(const QByteArray& data, const HifiSockAddr& sender, int& headerPlusIDSize) { +QUuid readSessionID(const QByteArray& data, const SharedNodePointer& sendingNode, int& headerPlusIDSize) { // get the header size int headerSize = numBytesForPacketHeader(data); @@ -114,7 +114,7 @@ QUuid readSessionID(const QByteArray& data, const HifiSockAddr& sender, int& hea const int UUID_BYTES = 16; headerPlusIDSize = headerSize + UUID_BYTES; if (data.size() < headerPlusIDSize) { - qWarning() << "Metavoxel data too short [size=" << data.size() << ", sender=" << sender << "]\n"; + qWarning() << "Metavoxel data too short [size=" << data.size() << ", sendingNode=" << sendingNode << "]\n"; return QUuid(); } return QUuid::fromRfc4122(QByteArray::fromRawData(data.constData() + headerSize, UUID_BYTES)); diff --git a/libraries/metavoxels/src/MetavoxelUtil.h b/libraries/metavoxels/src/MetavoxelUtil.h index 117825be64..9fa721d21c 100644 --- a/libraries/metavoxels/src/MetavoxelUtil.h +++ b/libraries/metavoxels/src/MetavoxelUtil.h @@ -15,6 +15,7 @@ #include #include +#include #include #include "Bitstream.h" @@ -30,7 +31,7 @@ class NetworkProgram; /// Reads and returns the session ID from a datagram. /// \param[out] headerPlusIDSize the size of the header (including the session ID) within the data /// \return the session ID, or a null ID if invalid (in which case a warning will be logged) -QUuid readSessionID(const QByteArray& data, const HifiSockAddr& sender, int& headerPlusIDSize); +QUuid readSessionID(const QByteArray& data, const SharedNodePointer& sendingNode, int& headerPlusIDSize); /// A streamable axis-aligned bounding box. class Box { diff --git a/libraries/shared/src/DataServerClient.cpp b/libraries/shared/src/DataServerClient.cpp index fd003aa3bb..7ca951ba29 100644 --- a/libraries/shared/src/DataServerClient.cpp +++ b/libraries/shared/src/DataServerClient.cpp @@ -21,7 +21,7 @@ quint8 DataServerClient::_sequenceNumber = 0; const char MULTI_KEY_VALUE_SEPARATOR = '|'; -const char DATA_SERVER_HOSTNAME[] = "data.highfidelity.io"; +const char DATA_SERVER_HOSTNAME[] = "localhost"; const unsigned short DATA_SERVER_PORT = 3282; const HifiSockAddr& DataServerClient::dataServerSockAddr() {