History

added octree scene stats locking and unlocking

wangyix committed 12 years ago

Commit 3bc457d1 parent 52860904 files · +48 −34Browse files

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

Unified · Split

interface/src/Application.cpp+43−24
@@ -2107,6 +2107,21 @@ void Application::updateMyAvatar(float deltaTime) { · 2106 unmodified lines
21072107 }
21082108 }
21092109
2110+/*/ Attempt to identify the sender from it's address.
2111+ if (sendingNode) {
2112+ QUuid nodeUUID = sendingNode->getUUID();
2113+
2114+ // now that we know the node ID, let's add these stats to the stats for that node...
2115+ _octreeSceneStatsLock.lockForWrite();
2116+ if (_octreeServerSceneStats.find(nodeUUID) != _octreeServerSceneStats.end()) {
2117+ OctreeSceneStats& stats = _octreeServerSceneStats[nodeUUID];
2118+ stats.trackIncomingOctreePacket(packet, wasStatsPacket, sendingNode->getClockSkewUsec());
2119+ }
2120+ _octreeSceneStatsLock.unlock();
2121+ }
2122+ */
2123+
2124+
21102125
21112126 void Application::sendNack() {
21122127
@@ -2122,13 +2137,6 @@ void Application::sendNack() { · 9 unmodified lines
21222137 || node->getType() == NodeType::ModelServer)
21232138 ) {
21242139
2125− //_octreeSceneStatsLock.lockForWrite();
2126−
2127− OctreeSceneStats& stats = _octreeServerSceneStats[node->getUUID()];
2128− int numSequenceNumbersAvailable = stats.getNumSequenceNumbersToNack();
2129− if (numSequenceNumbersAvailable == 0)
2130− continue;
2131−
21322140 char* dataAt = packet;
21332141 int bytesRemaining = MAX_PACKET_SIZE;
21342142
@@ -2136,28 +2144,39 @@ void Application::sendNack() { · 1 unmodified line
21362144 int numBytesPacketHeader = populatePacketHeader(packet, PacketTypeOctreeDataNack);
21372145 dataAt += numBytesPacketHeader;
21382146 bytesRemaining -= numBytesPacketHeader;
2147+ int numSequenceNumbersRoomFor = (bytesRemaining - sizeof(uint16_t)) / sizeof(OCTREE_PACKET_SEQUENCE);
21392148
2140− int numPacketsRoomFor = (bytesRemaining - sizeof(uint16_t)) / sizeof(OCTREE_PACKET_SEQUENCE);
21412149
2150+ QUuid nodeUUID = node->getUUID();
21422151
2143− // calculate and pack number of sequence numbers
2144− uint16_t numSequenceNumbers = min(numSequenceNumbersAvailable, numPacketsRoomFor);
2145− uint16_t* numSequenceNumbersAt = (uint16_t*)dataAt;
2146− *numSequenceNumbersAt = numSequenceNumbers;
2147− dataAt += sizeof(uint16_t);
2152+ _octreeSceneStatsLock.lockForWrite();
2153+ if (_octreeServerSceneStats.find(nodeUUID) != _octreeServerSceneStats.end()) {
2154+ OctreeSceneStats& stats = _octreeServerSceneStats[nodeUUID];
2155+
2156+ int numSequenceNumbersAvailable = stats.getNumSequenceNumbersToNack();
2157+ if (numSequenceNumbersAvailable == 0) {
2158+ _octreeSceneStatsLock.unlock();
2159+ continue;
2160+ }
21482161
2149− // pack sequence numbers
2150−//printf("\n\t sending nack...\n");
2151−//printf("\t\t packed %d seq #s:", numSequenceNumbers);
2152− for (int i = 0; i < numSequenceNumbers; i++) {
2153− OCTREE_PACKET_SEQUENCE* sequenceNumberAt = (OCTREE_PACKET_SEQUENCE*)dataAt;
2154− *sequenceNumberAt = stats.getNextSequenceNumberToNack();
2155− dataAt += sizeof(OCTREE_PACKET_SEQUENCE);
2156−//printf(" %d,", *sequenceNumberAt);
2162+ // calculate and pack number of sequence numbers
2163+ uint16_t numSequenceNumbers = min(numSequenceNumbersAvailable, numSequenceNumbersRoomFor);
2164+ uint16_t* numSequenceNumbersAt = (uint16_t*)dataAt;
2165+ *numSequenceNumbersAt = numSequenceNumbers;
2166+ dataAt += sizeof(uint16_t);
2167+
2168+ // pack sequence numbers
2169+ //printf("\n\t sending nack...\n");
2170+ //printf("\t\t packed %d seq #s:", numSequenceNumbers);
2171+ for (int i = 0; i < numSequenceNumbers; i++) {
2172+ OCTREE_PACKET_SEQUENCE* sequenceNumberAt = (OCTREE_PACKET_SEQUENCE*)dataAt;
2173+ *sequenceNumberAt = stats.getNextSequenceNumberToNack();
2174+ dataAt += sizeof(OCTREE_PACKET_SEQUENCE);
2175+ //printf(" %d,", *sequenceNumberAt);
2176+ }
2177+ //printf("\n");
21572178 }
2158−//printf("\n");
2159−
2160− //_octreeSceneStatsLock.unlock();
2179+ _octreeSceneStatsLock.unlock();
21612180
21622181 // make sure we still have an active socket????
21632182 nodeList->writeUnverifiedDatagram(packet, dataAt-packet, node);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t