History

Retain a shared node pointer, use the active socket. Fixed a compile warning.

Andrzej Kapolka committed 12 years ago

Commit 1e4bfff1 parent fbcd4cf4 files · +22 −21Browse files

Showing the changes to interface/src/MetavoxelSystem.cpp (1 of 4 files). Show all

Unified · Split

interface/src/MetavoxelSystem.cpp+14−13
@@ -6,6 +6,7 @@ · 5 unmodified lines
66 // Copyright (c) 2013 High Fidelity, Inc. All rights reserved.
77 //
88
9+#include <QMutexLocker>
910 #include <QtDebug>
1011
1112 #include <SharedUtil.h>
@@ -111,8 +112,7 @@ void MetavoxelSystem::render() { · 99 unmodified lines
111112
112113 void MetavoxelSystem::nodeAdded(SharedNodePointer node) {
113114 if (node->getType() == NODE_TYPE_METAVOXEL_SERVER) {
114− QMetaObject::invokeMethod(this, "addClient", Q_ARG(const QUuid&, node->getUUID()),
115− Q_ARG(const HifiSockAddr&, node->getLocalSocket()));
115+ QMetaObject::invokeMethod(this, "addClient", Q_ARG(const SharedNodePointer&, node));
116116 }
117117 }
118118
@@ -122,9 +122,9 @@ void MetavoxelSystem::nodeKilled(SharedNodePointer node) { · 3 unmodified lines
122122 }
123123 }
124124
125−void MetavoxelSystem::addClient(const QUuid& uuid, const HifiSockAddr& address) {
126− MetavoxelClient* client = new MetavoxelClient(address);
127− _clients.insert(uuid, client);
125+void MetavoxelSystem::addClient(const SharedNodePointer& node) {
126+ MetavoxelClient* client = new MetavoxelClient(node);
127+ _clients.insert(node->getUUID(), client);
128128 _clientsBySessionID.insert(client->getSessionID(), client);
129129 }
130130
@@ -142,7 +142,7 @@ void MetavoxelSystem::receivedData(const QByteArray& data, const HifiSockAddr& s · 11 unmodified lines
142142 }
143143 MetavoxelClient* client = _clientsBySessionID.value(sessionID);
144144 if (client) {
145− client->receivedData(data, sender);
145+ client->receivedData(data);
146146 }
147147 }
148148
@@ -176,8 +176,8 @@ static QByteArray createDatagramHeader(const QUuid& sessionID) { · 27 unmodified lines
176176 return header;
177177 }
178178
179−MetavoxelClient::MetavoxelClient(const HifiSockAddr& address) :
180− _address(address),
179+MetavoxelClient::MetavoxelClient(const SharedNodePointer& node) :
180+ _node(node),
181181 _sessionID(QUuid::createUuid()),
182182 _sequencer(createDatagramHeader(_sessionID)) {
183183
@@ -214,16 +214,17 @@ void MetavoxelClient::simulate(float deltaTime, MetavoxelVisitor& visitor) { · 30 unmodified lines
214214 _data.guide(visitor);
215215 }
216216
217−void MetavoxelClient::receivedData(const QByteArray& data, const HifiSockAddr& sender) {
218− // save the most recent sender
219− _address = sender;
220−
217+void MetavoxelClient::receivedData(const QByteArray& data) {
221218 // process through sequencer
222219 _sequencer.receivedDatagram(data);
223220 }
224221
225222 void MetavoxelClient::sendData(const QByteArray& data) {
226− NodeList::getInstance()->getNodeSocket().writeDatagram(data, _address.getAddress(), _address.getPort());
223+ QMutexLocker locker(&_node->getMutex());
224+ const HifiSockAddr* address = _node->getActiveSocket();
225+ if (address) {
226+ NodeList::getInstance()->getNodeSocket().writeDatagram(data, address->getAddress(), address->getPort());
227+ }
227228 }
228229
229230 void MetavoxelClient::readPacket(Bitstream& in) {