Merge pull request #1538 from birarda/nodelist-container

don't return an iterator from killNodeAtHashIterator
This commit is contained in:
Philip Rosedale 2014-01-15 13:15:06 -08:00
commit 106c8f9f22
3 changed files with 12 additions and 7 deletions

View file

@ -55,7 +55,8 @@ void Agent::run() {
// XXXBHG - this seems less than ideal. There might be classes (like jurisdiction listeners, that need access to
// other node types, but for them to get access to those node types, we have to add them here. It seems like
// NodeList should support adding types of interest
const NODE_TYPE AGENT_NODE_TYPES_OF_INTEREST[] = { NODE_TYPE_VOXEL_SERVER, NODE_TYPE_PARTICLE_SERVER };
const NODE_TYPE AGENT_NODE_TYPES_OF_INTEREST[] = { NODE_TYPE_VOXEL_SERVER, NODE_TYPE_PARTICLE_SERVER,
NODE_TYPE_AUDIO_MIXER };
nodeList->setNodeTypesOfInterest(AGENT_NODE_TYPES_OF_INTEREST, sizeof(AGENT_NODE_TYPES_OF_INTEREST));

View file

@ -274,7 +274,9 @@ void NodeList::clear() {
// iterate the nodes in the list
while (nodeItem != _nodeHash.end()) {
nodeItem = killNodeAtHashIterator(nodeItem);
NodeHash::iterator previousNodeItem = nodeItem;
++nodeItem;
killNodeAtHashIterator(previousNodeItem);
}
}
@ -440,14 +442,13 @@ void NodeList::killNodeWithUUID(const QUuid& nodeUUID) {
}
}
NodeHash::iterator NodeList::killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill) {
void NodeList::killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill) {
qDebug() << "Killed" << *nodeItemToKill.value();
emit nodeKilled(nodeItemToKill.value());
return _nodeHash.erase(nodeItemToKill);
_nodeHash.erase(nodeItemToKill);
}
void NodeList::sendKillNode(const char* nodeTypes, int numNodeTypes) {
unsigned char packet[MAX_PACKET_SIZE];
unsigned char* packetPosition = packet;
@ -790,7 +791,10 @@ void NodeList::removeSilentNodes() {
if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > NODE_SILENCE_THRESHOLD_USECS) {
// call our private method to kill this node (removes it and emits the right signal)
nodeItem = killNodeAtHashIterator(nodeItem);
NodeHash::iterator previousNodeItem = nodeItem;
++nodeItem;
killNodeAtHashIterator(previousNodeItem);
} else {
// we didn't kill this node, push the iterator forwards
++nodeItem;

View file

@ -137,7 +137,7 @@ private:
void processKillNode(unsigned char* packetData, size_t dataBytes);
NodeHash::iterator killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill);
void killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill);
NodeHash _nodeHash;
QString _domainHostname;