Showing the changes to interface/src/Application.cpp (1 of 4 files). Show all
Unified · Split
| @@ -2107,6 +2107,21 @@ void Application::updateMyAvatar(float deltaTime) { · 2106 unmodified lines | |||
| 2107 | } | 2107 | } |
| 2108 | } | 2108 | } |
| 2109 | 2109 | ||
| 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 | |||
| 2110 | 2125 | ||
| 2111 | void Application::sendNack() { | 2126 | void Application::sendNack() { |
| 2112 | 2127 | ||
| @@ -2122,13 +2137,6 @@ void Application::sendNack() { · 9 unmodified lines | |||
| 2122 | || node->getType() == NodeType::ModelServer) | 2137 | || node->getType() == NodeType::ModelServer) |
| 2123 | ) { | 2138 | ) { |
| 2124 | 2139 | ||
| 2125 | //_octreeSceneStatsLock.lockForWrite(); | ||
| 2126 | |||
| 2127 | OctreeSceneStats& stats = _octreeServerSceneStats[node->getUUID()]; | ||
| 2128 | int numSequenceNumbersAvailable = stats.getNumSequenceNumbersToNack(); | ||
| 2129 | if (numSequenceNumbersAvailable == 0) | ||
| 2130 | continue; | ||
| 2131 | |||
| 2132 | char* dataAt = packet; | 2140 | char* dataAt = packet; |
| 2133 | int bytesRemaining = MAX_PACKET_SIZE; | 2141 | int bytesRemaining = MAX_PACKET_SIZE; |
| 2134 | 2142 | ||
| @@ -2136,28 +2144,39 @@ void Application::sendNack() { · 1 unmodified line | |||
| 2136 | int numBytesPacketHeader = populatePacketHeader(packet, PacketTypeOctreeDataNack); | 2144 | int numBytesPacketHeader = populatePacketHeader(packet, PacketTypeOctreeDataNack); |
| 2137 | dataAt += numBytesPacketHeader; | 2145 | dataAt += numBytesPacketHeader; |
| 2138 | bytesRemaining -= numBytesPacketHeader; | 2146 | bytesRemaining -= numBytesPacketHeader; |
| 2147 | int numSequenceNumbersRoomFor = (bytesRemaining - sizeof(uint16_t)) / sizeof(OCTREE_PACKET_SEQUENCE); | ||
| 2139 | 2148 | ||
| 2140 | int numPacketsRoomFor = (bytesRemaining - sizeof(uint16_t)) / sizeof(OCTREE_PACKET_SEQUENCE); | ||
| 2141 | 2149 | ||
| 2150 | QUuid nodeUUID = node->getUUID(); | ||
| 2142 | 2151 | ||
| 2143 | // calculate and pack number of sequence numbers | 2152 | _octreeSceneStatsLock.lockForWrite(); |
| 2144 | uint16_t numSequenceNumbers = min(numSequenceNumbersAvailable, numPacketsRoomFor); | 2153 | if (_octreeServerSceneStats.find(nodeUUID) != _octreeServerSceneStats.end()) { |
| 2145 | uint16_t* numSequenceNumbersAt = (uint16_t*)dataAt; | 2154 | OctreeSceneStats& stats = _octreeServerSceneStats[nodeUUID]; |
| 2146 | *numSequenceNumbersAt = numSequenceNumbers; | 2155 | |
| 2147 | dataAt += sizeof(uint16_t); | 2156 | int numSequenceNumbersAvailable = stats.getNumSequenceNumbersToNack(); |
| 2157 | if (numSequenceNumbersAvailable == 0) { | ||
| 2158 | _octreeSceneStatsLock.unlock(); | ||
| 2159 | continue; | ||
| 2160 | } | ||
| 2148 | 2161 | ||
| 2149 | // pack sequence numbers | 2162 | // calculate and pack number of sequence numbers |
| 2150 | //printf("\n\t sending nack...\n"); | 2163 | uint16_t numSequenceNumbers = min(numSequenceNumbersAvailable, numSequenceNumbersRoomFor); |
| 2151 | //printf("\t\t packed %d seq #s:", numSequenceNumbers); | 2164 | uint16_t* numSequenceNumbersAt = (uint16_t*)dataAt; |
| 2152 | for (int i = 0; i < numSequenceNumbers; i++) { | 2165 | *numSequenceNumbersAt = numSequenceNumbers; |
| 2153 | OCTREE_PACKET_SEQUENCE* sequenceNumberAt = (OCTREE_PACKET_SEQUENCE*)dataAt; | 2166 | dataAt += sizeof(uint16_t); |
| 2154 | *sequenceNumberAt = stats.getNextSequenceNumberToNack(); | 2167 | |
| 2155 | dataAt += sizeof(OCTREE_PACKET_SEQUENCE); | 2168 | // pack sequence numbers |
| 2156 | //printf(" %d,", *sequenceNumberAt); | 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"); | ||
| 2157 | } | 2178 | } |
| 2158 | //printf("\n"); | 2179 | _octreeSceneStatsLock.unlock(); |
| 2159 | |||
| 2160 | //_octreeSceneStatsLock.unlock(); | ||
| 2161 | 2180 | ||
| 2162 | // make sure we still have an active socket???? | 2181 | // make sure we still have an active socket???? |
| 2163 | nodeList->writeUnverifiedDatagram(packet, dataAt-packet, node); | 2182 | nodeList->writeUnverifiedDatagram(packet, dataAt-packet, node); |