From d617b71232cce6e3d8c43500e649f4d7559fa764 Mon Sep 17 00:00:00 2001
From: Stephen Birarda <commit@birarda.com>
Date: Tue, 14 Jul 2015 14:27:26 -0700
Subject: [PATCH] remove SharedNodePointer from some packet callbacks

---
 assignment-client/src/AssignmentClient.cpp    |  8 ++++---
 assignment-client/src/AssignmentClient.h      |  4 ++--
 assignment-client/src/avatars/AvatarMixer.cpp |  5 ++---
 assignment-client/src/avatars/AvatarMixer.h   |  2 +-
 .../src/entities/EntityServer.cpp             | 19 +++-------------
 assignment-client/src/entities/EntityServer.h |  4 +---
 domain-server/src/DomainServer.cpp            |  2 +-
 interface/src/Application.cpp                 |  2 +-
 interface/src/Application.h                   |  2 +-
 .../entities/src/EntityEditPacketSender.cpp   |  2 +-
 .../entities/src/EntityEditPacketSender.h     |  2 +-
 libraries/networking/src/DomainHandler.cpp    | 19 ++++++++++++++++
 libraries/networking/src/DomainHandler.h      |  8 ++++---
 libraries/networking/src/NodeList.cpp         | 22 -------------------
 libraries/networking/src/NodeList.h           |  1 -
 15 files changed, 43 insertions(+), 59 deletions(-)

diff --git a/assignment-client/src/AssignmentClient.cpp b/assignment-client/src/AssignmentClient.cpp
index aab5d6af3b..6da3786ef7 100644
--- a/assignment-client/src/AssignmentClient.cpp
+++ b/assignment-client/src/AssignmentClient.cpp
@@ -210,7 +210,7 @@ void AssignmentClient::sendAssignmentRequest() {
     }
 }
 
-void AssignmentClient::handleCreateAssignmentPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode, HifiSockAddr senderSockAddr) {
+void AssignmentClient::handleCreateAssignmentPacket(QSharedPointer<NLPacket> packet) {
     qDebug() << "Received a PacketType::CreateAssignment - attempting to unpack.";
 
     // construct the deployed assignment from the packet data
@@ -223,7 +223,7 @@ void AssignmentClient::handleCreateAssignmentPacket(QSharedPointer<NLPacket> pac
 
         // switch our DomainHandler hostname and port to whoever sent us the assignment
 
-        nodeList->getDomainHandler().setSockAddr(senderSockAddr, _assignmentServerHostname);
+        nodeList->getDomainHandler().setSockAddr(packet->getSenderSockAddr(), _assignmentServerHostname);
         nodeList->getDomainHandler().setAssignmentUUID(_currentAssignment->getUUID());
 
         qDebug() << "Destination IP for assignment is" << nodeList->getDomainHandler().getIP().toString();
@@ -261,7 +261,9 @@ void AssignmentClient::handleCreateAssignmentPacket(QSharedPointer<NLPacket> pac
     }
 }
 
-void AssignmentClient::handleStopNodePacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode, HifiSockAddr senderSockAddr) {
+void AssignmentClient::handleStopNodePacket(QSharedPointer<NLPacket> packet) {
+    const HifiSockAddr& senderSockAddr = packet->getSenderSockAddr();
+    
     if (senderSockAddr.getAddress() == QHostAddress::LocalHost ||
             senderSockAddr.getAddress() == QHostAddress::LocalHostIPv6) {
         qDebug() << "AssignmentClientMonitor at" << senderSockAddr << "requested stop via PacketType::StopNode.";
diff --git a/assignment-client/src/AssignmentClient.h b/assignment-client/src/AssignmentClient.h
index e18e8eea4d..348255751c 100644
--- a/assignment-client/src/AssignmentClient.h
+++ b/assignment-client/src/AssignmentClient.h
@@ -39,8 +39,8 @@ public slots:
     void aboutToQuit();
 
 private slots:
-    void handleCreateAssignmentPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode, HifiSockAddr senderSockAddr);
-    void handleStopNodePacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode, HifiSockAddr senderSockAddr);
+    void handleCreateAssignmentPacket(QSharedPointer<NLPacket> packet);
+    void handleStopNodePacket(QSharedPointer<NLPacket> packet);
 
 private:
     void setUpStatusToMonitor();
diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp
index 02202100be..b0a50403c6 100644
--- a/assignment-client/src/avatars/AvatarMixer.cpp
+++ b/assignment-client/src/avatars/AvatarMixer.cpp
@@ -432,9 +432,8 @@ void AvatarMixer::handleAvatarBillboardPacket(QSharedPointer<NLPacket> packet, S
     }
 }
 
-void AvatarMixer::handleKillAvatarPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode) {
-    auto nodeList = DependencyManager::get<NodeList>();
-    nodeList->processKillNode(*packet);
+void AvatarMixer::handleKillAvatarPacket(QSharedPointer<NLPacket> packet) {
+    DependencyManager::get<NodeList>()->processKillNode(*packet);
 }
 
 void AvatarMixer::sendStatsPacket() {
diff --git a/assignment-client/src/avatars/AvatarMixer.h b/assignment-client/src/avatars/AvatarMixer.h
index d0ced8cdfd..034269f7fa 100644
--- a/assignment-client/src/avatars/AvatarMixer.h
+++ b/assignment-client/src/avatars/AvatarMixer.h
@@ -35,7 +35,7 @@ private slots:
     void handleAvatarDataPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode);
     void handleAvatarIdentityPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode);
     void handleAvatarBillboardPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode);
-    void handleKillAvatarPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode);
+    void handleKillAvatarPacket(QSharedPointer<NLPacket> packet);
     
 private:
     void broadcastAvatarData();
diff --git a/assignment-client/src/entities/EntityServer.cpp b/assignment-client/src/entities/EntityServer.cpp
index 2a6815c2d5..c9c999077c 100644
--- a/assignment-client/src/entities/EntityServer.cpp
+++ b/assignment-client/src/entities/EntityServer.cpp
@@ -26,9 +26,8 @@ EntityServer::EntityServer(NLPacket& packet) :
     _entitySimulation(NULL)
 {
     auto& packetReceiver = DependencyManager::get<NodeList>()->getPacketReceiver();
-    packetReceiver.registerListener(PacketType::EntityAdd, this, "handleEntityAddPacket");
-    packetReceiver.registerListener(PacketType::EntityEdit, this, "handleEntityEditPacket");
-    packetReceiver.registerListener(PacketType::EntityErase, this, "handleEntityErasePacket");
+    packetReceiver.registerListenerForTypes({ PacketType::EntityAdd, PacketType::EntityEdit, PacketType::EntityErase },
+                                            this, "handleEntityPacket");
 }
 
 EntityServer::~EntityServer() {
@@ -41,19 +40,7 @@ EntityServer::~EntityServer() {
     tree->removeNewlyCreatedHook(this);
 }
 
-void EntityServer::handleEntityAddPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode) {
-    if (_octreeInboundPacketProcessor) {
-        _octreeInboundPacketProcessor->queueReceivedPacket(packet, senderNode);
-    }
-}
-
-void EntityServer::handleEntityEditPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode) {
-    if (_octreeInboundPacketProcessor) {
-        _octreeInboundPacketProcessor->queueReceivedPacket(packet, senderNode);
-    }
-}
-
-void EntityServer::handleEntityErasePacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode) {
+void EntityServer::handleEntityPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode) {
     if (_octreeInboundPacketProcessor) {
         _octreeInboundPacketProcessor->queueReceivedPacket(packet, senderNode);
     }
diff --git a/assignment-client/src/entities/EntityServer.h b/assignment-client/src/entities/EntityServer.h
index dde68dfebd..1c4eda3cc0 100644
--- a/assignment-client/src/entities/EntityServer.h
+++ b/assignment-client/src/entities/EntityServer.h
@@ -50,9 +50,7 @@ protected:
     virtual Octree* createTree();
 
 private slots:
-    void handleEntityAddPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode);
-    void handleEntityEditPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode);
-    void handleEntityErasePacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode);
+    void handleEntityPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode);
 
 private:
     EntitySimulation* _entitySimulation;
diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp
index 579ec1a002..21b2ce0f58 100644
--- a/domain-server/src/DomainServer.cpp
+++ b/domain-server/src/DomainServer.cpp
@@ -1415,7 +1415,7 @@ void DomainServer::processICEPingReplyPacket(QSharedPointer<NLPacket> packet) {
 
 void DomainServer::processNodeJSONStatsPacket(QSharedPointer<NLPacket> packet, SharedNodePointer sendingNode) {
     if (sendingNode->getLinkedData()) {
-        reinterpret_cast<DomainServerNodeData*>(sendingNode->getLinkedData())->processJSONStatsPacket(*packet);
+        dynamic_cast<DomainServerNodeData*>(sendingNode->getLinkedData())->processJSONStatsPacket(*packet);
     }
 }
 
diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp
index 7886041ff6..f06e01f4c5 100644
--- a/interface/src/Application.cpp
+++ b/interface/src/Application.cpp
@@ -3821,7 +3821,7 @@ void Application::domainChanged(const QString& domainHostname) {
     _domainConnectionRefusals.clear();
 }
 
-void Application::handleDomainConnectionDeniedPacket(QSharedPointer<NLPacket> packet, SharedNodePointer senderNode) {
+void Application::handleDomainConnectionDeniedPacket(QSharedPointer<NLPacket> packet) {
     QDataStream packetStream(packet.data());
 
     QString reason;
diff --git a/interface/src/Application.h b/interface/src/Application.h
index 4580e762e6..754698acc8 100644
--- a/interface/src/Application.h
+++ b/interface/src/Application.h
@@ -447,7 +447,7 @@ public slots:
 
     void notifyPacketVersionMismatch();
 
-    void handleDomainConnectionDeniedPacket(QSharedPointer<NLPacket>, SharedNodePointer senderNode);
+    void handleDomainConnectionDeniedPacket(QSharedPointer<NLPacket> packet);
 
     void cameraMenuChanged();
 
diff --git a/libraries/entities/src/EntityEditPacketSender.cpp b/libraries/entities/src/EntityEditPacketSender.cpp
index 0dd3465b33..160e8721f1 100644
--- a/libraries/entities/src/EntityEditPacketSender.cpp
+++ b/libraries/entities/src/EntityEditPacketSender.cpp
@@ -22,7 +22,7 @@ EntityEditPacketSender::EntityEditPacketSender() {
     packetReceiver.registerListener(PacketType::EntityEditNack, this, "processEntityEditNackPacket");
 }
 
-void EntityEditPacketSender::processEntityEditNackPacket(QSharedPointer<NLPacket> packet, HifiSockAddr senderSockAddr) {
+void EntityEditPacketSender::processEntityEditNackPacket(QSharedPointer<NLPacket> packet) {
     // if (!Menu::getInstance()->isOptionChecked(MenuOption::DisableNackPackets)) {
         processNackPacket(QByteArray::fromRawData(packet->getData(), packet->getSizeWithHeader()));
     // }
diff --git a/libraries/entities/src/EntityEditPacketSender.h b/libraries/entities/src/EntityEditPacketSender.h
index 39bd4cdffc..235e340da2 100644
--- a/libraries/entities/src/EntityEditPacketSender.h
+++ b/libraries/entities/src/EntityEditPacketSender.h
@@ -32,7 +32,7 @@ public:
 
     void queueEraseEntityMessage(const EntityItemID& entityItemID);
 
-    void processEntityEditNackPacket(QSharedPointer<NLPacket> packet, HifiSockAddr senderSockAddr);
+    void processEntityEditNackPacket(QSharedPointer<NLPacket> packet);
 
     // My server type is the model server
     virtual char getMyNodeType() const { return NodeType::EntityServer; }
diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp
index 174fbe8cb3..20d13169a3 100644
--- a/libraries/networking/src/DomainHandler.cpp
+++ b/libraries/networking/src/DomainHandler.cpp
@@ -43,6 +43,7 @@ DomainHandler::DomainHandler(QObject* parent) :
 
     packetReceiver.registerListener(PacketType::ICEServerPeerInformation, this, "processICEResponsePacket");
     packetReceiver.registerListener(PacketType::DomainServerRequireDTLS, this, "processDTLSRequirementPacket");
+    packetReceiver.registerListener(PacketType::ICEPingReply, this, "processICEPingReplyPacket");
 }
 
 void DomainHandler::clearConnectionInfo() {
@@ -286,6 +287,24 @@ void DomainHandler::settingsRequestFinished() {
     settingsReply->deleteLater();
 }
 
+void DomainHandler::processICEPingReplyPacket(QSharedPointer<NLPacket> packet) {
+    const HifiSockAddr& senderSockAddr = packet->getSenderSockAddr();
+    qCDebug(networking) << "Received reply from domain-server on" << senderSockAddr;
+
+    if (getIP().isNull()) {
+        // for now we're unsafely assuming this came back from the domain
+        if (senderSockAddr == _icePeer.getLocalSocket()) {
+            qCDebug(networking) << "Connecting to domain using local socket";
+            activateICELocalSocket();
+        } else if (senderSockAddr == _icePeer.getPublicSocket()) {
+            qCDebug(networking) << "Conecting to domain using public socket";
+            activateICEPublicSocket();
+        } else {
+            qCDebug(networking) << "Reply does not match either local or public socket for domain. Will not connect.";
+        }
+    }
+}
+
 void DomainHandler::processDTLSRequirementPacket(QSharedPointer<NLPacket> dtlsRequirementPacket) {
     // figure out the port that the DS wants us to use for us to talk to them with DTLS
     unsigned short dtlsPort;
diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h
index 82b0c163de..43453e46c5 100644
--- a/libraries/networking/src/DomainHandler.h
+++ b/libraries/networking/src/DomainHandler.h
@@ -71,9 +71,7 @@ public:
     void requestDomainSettings();
     const QJsonObject& getSettingsObject() const { return _settingsObject; }
 
-    void processDTLSRequirementPacket(QSharedPointer<NLPacket> dtlsRequirementPacket);
-    void processICEResponsePacket(QSharedPointer<NLPacket> icePacket);
-
+   
     void setPendingPath(const QString& pendingPath) { _pendingPath = pendingPath; }
     const QString& getPendingPath() { return _pendingPath; }
     void clearPendingPath() { _pendingPath.clear(); }
@@ -85,6 +83,10 @@ public slots:
     void setHostnameAndPort(const QString& hostname, quint16 port = DEFAULT_DOMAIN_SERVER_PORT);
     void setIceServerHostnameAndID(const QString& iceServerHostname, const QUuid& id);
 
+    void processICEPingReplyPacket(QSharedPointer<NLPacket> packet);
+    void processDTLSRequirementPacket(QSharedPointer<NLPacket> dtlsRequirementPacket);
+    void processICEResponsePacket(QSharedPointer<NLPacket> icePacket);
+
 private slots:
     void completedHostnameLookup(const QHostInfo& hostInfo);
     void completedIceServerHostnameLookup();
diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp
index b0de65ab85..3773a8a540 100644
--- a/libraries/networking/src/NodeList.cpp
+++ b/libraries/networking/src/NodeList.cpp
@@ -93,12 +93,9 @@ NodeList::NodeList(char newOwnerType, unsigned short socketListenPort, unsigned
 
     auto& packetReceiver = getPacketReceiver();
     packetReceiver.registerListener(PacketType::DomainList, this, "processDomainServerList");
-    packetReceiver.registerListener(PacketType::DomainServerAddedNode, this, "processDomainServerAddedNode");
-    packetReceiver.registerListener(PacketType::DomainServerPathResponse, this, "processDomainServerPathQueryResponse");
     packetReceiver.registerListener(PacketType::Ping, this, "processPingPacket");
     packetReceiver.registerListener(PacketType::PingReply, this, "processPingReplyPacket");
     packetReceiver.registerListener(PacketType::ICEPing, this, "processICEPingPacket");
-    packetReceiver.registerListener(PacketType::ICEPingReply, this, "processICEPingReplyPacket");
 }
 
 qint64 NodeList::sendStats(const QJsonObject& statsObject, const HifiSockAddr& destination) {
@@ -190,25 +187,6 @@ void NodeList::processICEPingPacket(QSharedPointer<NLPacket> packet) {
     sendPacket(std::move(replyPacket), packet->getSenderSockAddr());
 }
 
-void NodeList::processICEPingReplyPacket(QSharedPointer<NLPacket> packet) {
-    const HifiSockAddr& senderSockAddr = packet->getSenderSockAddr();
-    qCDebug(networking) << "Received reply from domain-server on" << senderSockAddr;
-
-    if (_domainHandler.getIP().isNull()) {
-        // for now we're unsafely assuming this came back from the domain
-        if (senderSockAddr == _domainHandler.getICEPeer().getLocalSocket()) {
-            qCDebug(networking) << "Connecting to domain using local socket";
-            _domainHandler.activateICELocalSocket();
-        } else if (senderSockAddr == _domainHandler.getICEPeer().getPublicSocket()) {
-            qCDebug(networking) << "Conecting to domain using public socket";
-            _domainHandler.activateICEPublicSocket();
-        } else {
-            qCDebug(networking) << "Reply does not match either local or public socket for domain. Will not connect.";
-        }
-
-    }
-}
-
 void NodeList::reset() {
     LimitedNodeList::reset();
 
diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h
index 65bd6a6983..b9f782f717 100644
--- a/libraries/networking/src/NodeList.h
+++ b/libraries/networking/src/NodeList.h
@@ -80,7 +80,6 @@ public slots:
     void processPingReplyPacket(QSharedPointer<NLPacket> packet, SharedNodePointer sendingNode);
 
     void processICEPingPacket(QSharedPointer<NLPacket> packet);
-    void processICEPingReplyPacket(QSharedPointer<NLPacket> packet);
 signals:
     void limitOfSilentDomainCheckInsReached();
 private slots: