From e127c5c06d9b8c13fc1d8d053870268272d715cb Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jul 2015 10:40:40 -0700 Subject: [PATCH 1/7] rename Packet methods for clarity --- assignment-client/src/Agent.cpp | 4 +- assignment-client/src/audio/AudioMixer.cpp | 4 +- .../src/avatars/AvatarMixerClientData.cpp | 2 +- .../src/entities/EntityServer.cpp | 2 +- .../octree/OctreeInboundPacketProcessor.cpp | 12 +++--- .../src/octree/OctreeQueryNode.cpp | 6 +-- .../src/octree/OctreeSendThread.cpp | 32 +++++++------- domain-server/src/DomainServer.cpp | 2 +- ice-server/src/IceServer.cpp | 2 +- interface/src/Application.cpp | 2 +- .../src/octree/OctreePacketProcessor.cpp | 2 +- libraries/audio-client/src/AudioClient.cpp | 2 +- libraries/audio/src/AudioInjector.cpp | 2 +- .../entities/src/EntityEditPacketSender.cpp | 2 +- .../entities/src/EntityItemProperties.cpp | 2 +- libraries/networking/src/LimitedNodeList.cpp | 4 +- libraries/networking/src/NLPacket.cpp | 6 +-- libraries/networking/src/NodeList.cpp | 2 +- libraries/networking/src/PacketReceiver.cpp | 4 +- libraries/networking/src/PacketSender.cpp | 4 +- libraries/networking/src/udt/Packet.cpp | 42 +++++++++++++------ libraries/networking/src/udt/Packet.h | 19 +++++---- libraries/networking/src/udt/PacketList.cpp | 2 +- .../octree/src/OctreeEditPacketSender.cpp | 6 +-- libraries/octree/src/OctreeRenderer.cpp | 4 +- libraries/octree/src/OctreeSceneStats.cpp | 6 +-- 26 files changed, 99 insertions(+), 78 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 51b5b0eef2..d57d4ba663 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -65,9 +65,9 @@ void Agent::handleOctreePacket(QSharedPointer packet, SharedNodePointe if (packetType == PacketType::OctreeStats) { int statsMessageLength = OctreeHeadlessViewer::parseOctreeStats(packet, senderNode); - if (packet->getSizeUsed() > statsMessageLength) { + if (packet->getPayloadSize() > statsMessageLength) { // pull out the piggybacked packet and create a new QSharedPointer for it - int piggyBackedSizeWithHeader = packet->getSizeUsed() - statsMessageLength; + int piggyBackedSizeWithHeader = packet->getPayloadSize() - statsMessageLength; std::unique_ptr buffer = std::unique_ptr(new char[piggyBackedSizeWithHeader]); memcpy(buffer.get(), packet->getPayload() + statsMessageLength, piggyBackedSizeWithHeader); diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index bacad4c28f..215459bc2b 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -552,9 +552,9 @@ void AudioMixer::handleMuteEnvironmentPacket(QSharedPointer packet, Sh auto nodeList = DependencyManager::get(); if (sendingNode->getCanAdjustLocks()) { - auto newPacket = NLPacket::create(PacketType::MuteEnvironment, packet->getSizeUsed()); + auto newPacket = NLPacket::create(PacketType::MuteEnvironment, packet->getPayloadSize()); // Copy payload - newPacket->write(packet->getPayload(), packet->getSizeUsed()); + newPacket->write(packet->getPayload(), packet->getPayloadSize()); nodeList->eachNode([&](const SharedNodePointer& node){ if (node->getType() == NodeType::Agent && node->getActiveSocket() && diff --git a/assignment-client/src/avatars/AvatarMixerClientData.cpp b/assignment-client/src/avatars/AvatarMixerClientData.cpp index eb61e5ab4b..00ec6ad220 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.cpp +++ b/assignment-client/src/avatars/AvatarMixerClientData.cpp @@ -15,7 +15,7 @@ int AvatarMixerClientData::parseData(NLPacket& packet) { // compute the offset to the data payload - return _avatar.parseDataFromBuffer(QByteArray::fromRawData(packet.getPayload(), packet.getSizeUsed())); + return _avatar.parseDataFromBuffer(QByteArray::fromRawData(packet.getPayload(), packet.getPayloadSize())); } bool AvatarMixerClientData::checkAndSetHasReceivedFirstPackets() { diff --git a/assignment-client/src/entities/EntityServer.cpp b/assignment-client/src/entities/EntityServer.cpp index 26a6299b14..feef396c72 100644 --- a/assignment-client/src/entities/EntityServer.cpp +++ b/assignment-client/src/entities/EntityServer.cpp @@ -108,7 +108,7 @@ int EntityServer::sendSpecialPackets(const SharedNodePointer& node, OctreeQueryN queryNode->packetSent(*specialPacket); - totalBytes += specialPacket->getSizeWithHeader(); + totalBytes += specialPacket->getDataSize(); packetsSent++; DependencyManager::get()->sendPacket(std::move(specialPacket), *node); diff --git a/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp b/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp index 2b31b2f2a2..a2eea557a5 100644 --- a/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp +++ b/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp @@ -85,7 +85,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet if (debugProcessPacket) { qDebug("OctreeInboundPacketProcessor::processPacket() payload=%p payloadLength=%lld", packet->getPayload(), - packet->getSizeUsed()); + packet->getPayloadSize()); } // Ask our tree subclass if it can handle the incoming packet... @@ -117,7 +117,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet if (debugProcessPacket || _myServer->wantsDebugReceiving()) { qDebug() << "PROCESSING THREAD: got '" << packetType << "' packet - " << _receivedPacketCount << " command from client"; - qDebug() << " receivedBytes=" << packet->getSizeWithHeader(); + qDebug() << " receivedBytes=" << packet->getDataSize(); qDebug() << " sequence=" << sequence; qDebug() << " sentAt=" << sentAt << " usecs"; qDebug() << " arrivedAt=" << arrivedAt << " usecs"; @@ -135,7 +135,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet if (debugProcessPacket) { qDebug() << " atByte (in payload)=" << packet->pos(); - qDebug() << " payload size=" << packet->getSizeUsed(); + qDebug() << " payload size=" << packet->getPayloadSize(); if (!packet->bytesAvailable()) { qDebug() << " ----- UNEXPECTED ---- got a packet without any edit details!!!! --------"; } @@ -154,7 +154,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet qDebug() << " maxSize=" << maxSize; qDebug("OctreeInboundPacketProcessor::processPacket() %c " "payload=%p payloadLength=%lld editData=%p payloadPosition=%lld maxSize=%d", - packetType, packet->getPayload(), packet->getSizeUsed(), editData, + packetType, packet->getPayload(), packet->getPayloadSize(), editData, packet->pos(), maxSize); } @@ -184,7 +184,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet if (debugProcessPacket) { qDebug() << " editDataBytesRead=" << editDataBytesRead; qDebug() << " AFTER processEditPacketData payload position=" << packet->pos(); - qDebug() << " AFTER processEditPacketData payload size=" << packet->getSizeUsed(); + qDebug() << " AFTER processEditPacketData payload size=" << packet->getPayloadSize(); } } @@ -192,7 +192,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet if (debugProcessPacket) { qDebug("OctreeInboundPacketProcessor::processPacket() DONE LOOPING FOR %c " "payload=%p payloadLength=%lld editData=%p payloadPosition=%lld", - packetType, packet->getPayload(), packet->getSizeUsed(), editData, packet->pos()); + packetType, packet->getPayload(), packet->getPayloadSize(), editData, packet->pos()); } // Make sure our Node and NodeList knows we've heard from this node. diff --git a/assignment-client/src/octree/OctreeQueryNode.cpp b/assignment-client/src/octree/OctreeQueryNode.cpp index 65ee0e26f8..c8330209ce 100644 --- a/assignment-client/src/octree/OctreeQueryNode.cpp +++ b/assignment-client/src/octree/OctreeQueryNode.cpp @@ -108,10 +108,10 @@ bool OctreeQueryNode::packetIsDuplicate() const { // since our packets now include header information, like sequence number, and createTime, we can't just do a memcmp // of the entire packet, we need to compare only the packet content... - if (_lastOctreePacketLength == _octreePacket->getSizeUsed()) { + if (_lastOctreePacketLength == _octreePacket->getPayloadSize()) { if (memcmp(_lastOctreePayload + OCTREE_PACKET_EXTRA_HEADERS_SIZE, _octreePacket->getPayload() + OCTREE_PACKET_EXTRA_HEADERS_SIZE, - _octreePacket->getSizeUsed() - OCTREE_PACKET_EXTRA_HEADERS_SIZE) == 0) { + _octreePacket->getPayloadSize() - OCTREE_PACKET_EXTRA_HEADERS_SIZE) == 0) { return true; } } @@ -176,7 +176,7 @@ void OctreeQueryNode::resetOctreePacket() { // changed since we last reset it. Since we know that no two packets can ever be identical without being the same // scene information, (e.g. the root node packet of a static scene), we can use this as a strategy for reducing // packet send rate. - _lastOctreePacketLength = _octreePacket->getSizeUsed(); + _lastOctreePacketLength = _octreePacket->getPayloadSize(); memcpy(_lastOctreePayload, _octreePacket->getPayload(), _lastOctreePacketLength); // If we're moving, and the client asked for low res, then we force monochrome, otherwise, use diff --git a/assignment-client/src/octree/OctreeSendThread.cpp b/assignment-client/src/octree/OctreeSendThread.cpp index 7937604825..62517e698b 100644 --- a/assignment-client/src/octree/OctreeSendThread.cpp +++ b/assignment-client/src/octree/OctreeSendThread.cpp @@ -147,16 +147,16 @@ int OctreeSendThread::handlePacketSend(OctreeQueryNode* nodeData, int& trueBytes NLPacket& statsPacket = nodeData->stats.getStatsMessage(); // If the size of the stats message and the octree message will fit in a packet, then piggyback them - if (nodeData->getPacket().getSizeWithHeader() <= statsPacket.bytesAvailableForWrite()) { + if (nodeData->getPacket().getDataSize() <= statsPacket.bytesAvailableForWrite()) { // copy octree message to back of stats message - statsPacket.write(nodeData->getPacket().getData(), nodeData->getPacket().getSizeWithHeader()); + statsPacket.write(nodeData->getPacket().getData(), nodeData->getPacket().getDataSize()); // since a stats message is only included on end of scene, don't consider any of these bytes "wasted", since // there was nothing else to send. int thisWastedBytes = 0; _totalWastedBytes += thisWastedBytes; - _totalBytes += statsPacket.getSizeWithHeader(); + _totalBytes += statsPacket.getDataSize(); _totalPackets++; if (debug) { @@ -172,8 +172,8 @@ int OctreeSendThread::handlePacketSend(OctreeQueryNode* nodeData, int& trueBytes qDebug() << "Adding stats to packet at " << now << " [" << _totalPackets <<"]: sequence: " << sequence << " timestamp: " << timestamp << - " statsMessageLength: " << statsPacket.getSizeWithHeader() << - " original size: " << nodeData->getPacket().getSizeWithHeader() << " [" << _totalBytes << + " statsMessageLength: " << statsPacket.getDataSize() << + " original size: " << nodeData->getPacket().getDataSize() << " [" << _totalBytes << "] wasted bytes:" << thisWastedBytes << " [" << _totalWastedBytes << "]"; } @@ -190,7 +190,7 @@ int OctreeSendThread::handlePacketSend(OctreeQueryNode* nodeData, int& trueBytes // there was nothing else to send. int thisWastedBytes = 0; _totalWastedBytes += thisWastedBytes; - _totalBytes += statsPacket.getSizeWithHeader(); + _totalBytes += statsPacket.getDataSize(); _totalPackets++; if (debug) { @@ -206,11 +206,11 @@ int OctreeSendThread::handlePacketSend(OctreeQueryNode* nodeData, int& trueBytes qDebug() << "Sending separate stats packet at " << now << " [" << _totalPackets <<"]: sequence: " << sequence << " timestamp: " << timestamp << - " size: " << statsPacket.getSizeWithHeader() << " [" << _totalBytes << + " size: " << statsPacket.getDataSize() << " [" << _totalBytes << "] wasted bytes:" << thisWastedBytes << " [" << _totalWastedBytes << "]"; } - trueBytesSent += statsPacket.getSizeWithHeader(); + trueBytesSent += statsPacket.getDataSize(); truePacketsSent++; packetsSent++; @@ -218,10 +218,10 @@ int OctreeSendThread::handlePacketSend(OctreeQueryNode* nodeData, int& trueBytes DependencyManager::get()->sendUnreliablePacket(nodeData->getPacket(), *_node); packetSent = true; - int packetSizeWithHeader = nodeData->getPacket().getSizeWithHeader(); + int packetSizeWithHeader = nodeData->getPacket().getDataSize(); thisWastedBytes = MAX_PACKET_SIZE - packetSizeWithHeader; _totalWastedBytes += thisWastedBytes; - _totalBytes += nodeData->getPacket().getSizeWithHeader(); + _totalBytes += nodeData->getPacket().getDataSize(); _totalPackets++; if (debug) { @@ -237,7 +237,7 @@ int OctreeSendThread::handlePacketSend(OctreeQueryNode* nodeData, int& trueBytes qDebug() << "Sending packet at " << now << " [" << _totalPackets <<"]: sequence: " << sequence << " timestamp: " << timestamp << - " size: " << nodeData->getPacket().getSizeWithHeader() << " [" << _totalBytes << + " size: " << nodeData->getPacket().getDataSize() << " [" << _totalBytes << "] wasted bytes:" << thisWastedBytes << " [" << _totalWastedBytes << "]"; } } @@ -250,7 +250,7 @@ int OctreeSendThread::handlePacketSend(OctreeQueryNode* nodeData, int& trueBytes DependencyManager::get()->sendUnreliablePacket(nodeData->getPacket(), *_node); packetSent = true; - int packetSizeWithHeader = nodeData->getPacket().getSizeWithHeader(); + int packetSizeWithHeader = nodeData->getPacket().getDataSize(); int thisWastedBytes = MAX_PACKET_SIZE - packetSizeWithHeader; _totalWastedBytes += thisWastedBytes; _totalBytes += packetSizeWithHeader; @@ -277,8 +277,8 @@ int OctreeSendThread::handlePacketSend(OctreeQueryNode* nodeData, int& trueBytes // remember to track our stats if (packetSent) { - nodeData->stats.packetSent(nodeData->getPacket().getSizeUsed()); - trueBytesSent += nodeData->getPacket().getSizeUsed(); + nodeData->stats.packetSent(nodeData->getPacket().getPayloadSize()); + trueBytesSent += nodeData->getPacket().getPayloadSize(); truePacketsSent++; packetsSent++; nodeData->octreePacketSent(); @@ -596,9 +596,9 @@ int OctreeSendThread::packetDistributor(OctreeQueryNode* nodeData, bool viewFrus truePacketsSent++; packetsSentThisInterval++; - _totalBytes += packet->getSizeWithHeader(); + _totalBytes += packet->getDataSize(); _totalPackets++; - _totalWastedBytes += MAX_PACKET_SIZE - packet->getSizeWithHeader(); + _totalWastedBytes += MAX_PACKET_SIZE - packet->getDataSize(); } } diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 1824446fca..95dc2498a1 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -579,7 +579,7 @@ void DomainServer::processConnectRequestPacket(QSharedPointer packet) NodeType_t nodeType; HifiSockAddr publicSockAddr, localSockAddr; - if (packet->getSizeUsed() == 0) { + if (packet->getPayloadSize() == 0) { // TODO: We know what size the connect packet should be (minimally) - check for that here return; } diff --git a/ice-server/src/IceServer.cpp b/ice-server/src/IceServer.cpp index 1e9e3e8ec4..7cb22cad3c 100644 --- a/ice-server/src/IceServer.cpp +++ b/ice-server/src/IceServer.cpp @@ -134,7 +134,7 @@ void IceServer::sendPeerInformationPacket(const NetworkPeer& peer, const HifiSoc peerPacket->write(peer.toByteArray()); // write the current packet - _serverSocket.writeDatagram(peerPacket->getData(), peerPacket->getSizeWithHeader(), + _serverSocket.writeDatagram(peerPacket->getData(), peerPacket->getDataSize(), destinationSockAddr->getAddress(), destinationSockAddr->getPort()); } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index dfe94f66e5..3b163afe0e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2899,7 +2899,7 @@ void Application::queryOctree(NodeType_t serverType, PacketType::Value packetTyp // encode the query data int packetSize = _octreeQuery.getBroadcastData(reinterpret_cast(queryPacket->getPayload())); - queryPacket->setSizeUsed(packetSize); + queryPacket->setPayloadSize(packetSize); // make sure we still have an active socket nodeList->sendUnreliablePacket(*queryPacket, *node); diff --git a/interface/src/octree/OctreePacketProcessor.cpp b/interface/src/octree/OctreePacketProcessor.cpp index 7b3b2c771b..a7cb1aaa66 100644 --- a/interface/src/octree/OctreePacketProcessor.cpp +++ b/interface/src/octree/OctreePacketProcessor.cpp @@ -57,7 +57,7 @@ void OctreePacketProcessor::processPacket(QSharedPointer packet, Share int statsMessageLength = app->processOctreeStats(*packet, sendingNode); wasStatsPacket = true; - int piggybackBytes = packet->getSizeUsed() - statsMessageLength; + int piggybackBytes = packet->getPayloadSize() - statsMessageLength; if (piggybackBytes) { // construct a new packet from the piggybacked one diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 1982f5dd70..42829e2521 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -937,7 +937,7 @@ void AudioClient::handleAudioInput() { if (_audioPacket->getType() != PacketType::SilentAudioFrame) { // audio samples have already been packed (written to networkAudioSamples) - _audioPacket->setSizeUsed(_audioPacket->getSizeUsed() + numNetworkBytes); + _audioPacket->setPayloadSize(_audioPacket->getPayloadSize() + numNetworkBytes); } _stats.sentPacket(); diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 4866bcfad6..4b99597798 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -232,7 +232,7 @@ void AudioInjector::injectToMixer() { audioPacket->write(_audioData.data() + _currentSendPosition, bytesToCopy); // set the correct size used for this packet - audioPacket->setSizeUsed(audioPacket->pos()); + audioPacket->setPayloadSize(audioPacket->pos()); // grab our audio mixer from the NodeList, if it exists SharedNodePointer audioMixer = nodeList->soloNodeOfType(NodeType::AudioMixer); diff --git a/libraries/entities/src/EntityEditPacketSender.cpp b/libraries/entities/src/EntityEditPacketSender.cpp index 7dc216c261..9375208ac8 100644 --- a/libraries/entities/src/EntityEditPacketSender.cpp +++ b/libraries/entities/src/EntityEditPacketSender.cpp @@ -24,7 +24,7 @@ EntityEditPacketSender::EntityEditPacketSender() { void EntityEditPacketSender::processEntityEditNackPacket(QSharedPointer packet) { if (_shouldNack) { - processNackPacket(QByteArray::fromRawData(packet->getData(), packet->getSizeWithHeader())); + processNackPacket(QByteArray::fromRawData(packet->getData(), packet->getDataSize())); } } diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index a6df04e31e..6e6a9eb0a8 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -907,7 +907,7 @@ bool EntityItemProperties::decodeEntityEditPacket(NLPacket& packet, int& process const unsigned char* data = reinterpret_cast(packet.getPayload()); const unsigned char* dataAt = data; - int bytesToRead = packet.getSizeUsed(); + int bytesToRead = packet.getPayloadSize(); processedBytes = 0; // the first part of the data is an octcode, this is a required element of the edit packet format, but we don't diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 33139e66e8..04ea9b5dfd 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -215,7 +215,7 @@ bool LimitedNodeList::packetSourceAndHashMatch(const NLPacket& packet, SharedNod } qint64 LimitedNodeList::writeDatagram(const NLPacket& packet, const HifiSockAddr& destinationSockAddr) { - return writeDatagram({packet.getData(), static_cast(packet.getSizeWithHeader())}, destinationSockAddr); + return writeDatagram({packet.getData(), static_cast(packet.getDataSize())}, destinationSockAddr); } qint64 LimitedNodeList::writeDatagram(const QByteArray& datagram, const HifiSockAddr& destinationSockAddr) { @@ -598,7 +598,7 @@ bool LimitedNodeList::processSTUNResponse(QSharedPointer packet) { sizeof(RFC_5389_MAGIC_COOKIE_NETWORK_ORDER)) == 0) { // enumerate the attributes to find XOR_MAPPED_ADDRESS_TYPE - while (attributeStartIndex < packet->getSizeWithHeader()) { + while (attributeStartIndex < packet->getDataSize()) { if (memcmp(packet->getData() + attributeStartIndex, &XOR_MAPPED_ADDRESS_TYPE, sizeof(XOR_MAPPED_ADDRESS_TYPE)) == 0) { const int NUM_BYTES_STUN_ATTR_TYPE_AND_LENGTH = 4; const int NUM_BYTES_FAMILY_ALIGN = 1; diff --git a/libraries/networking/src/NLPacket.cpp b/libraries/networking/src/NLPacket.cpp index d1fabb1c15..99cf34e951 100644 --- a/libraries/networking/src/NLPacket.cpp +++ b/libraries/networking/src/NLPacket.cpp @@ -80,7 +80,7 @@ NLPacket::NLPacket(PacketType::Value type, qint64 size) : qint64 headerSize = localHeaderSize(type); _payloadStart += headerSize; - _capacity -= headerSize; + _payloadCapacity -= headerSize; } NLPacket::NLPacket(PacketType::Value type) : @@ -88,7 +88,7 @@ NLPacket::NLPacket(PacketType::Value type) : { qint64 headerSize = localHeaderSize(type); _payloadStart += headerSize; - _capacity -= headerSize; + _payloadCapacity -= headerSize; } NLPacket::NLPacket(const NLPacket& other) : Packet(other) { @@ -137,7 +137,7 @@ QByteArray NLPacket::payloadHashWithConnectionUUID(const QUuid& connectionUUID) QCryptographicHash hash(QCryptographicHash::Md5); // add the packet payload and the connection UUID - hash.addData(_payloadStart, _sizeUsed); + hash.addData(_payloadStart, _payloadSize); hash.addData(connectionUUID.toRfc4122()); // return the hash diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index dbcc4c3387..bd0b6b9458 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -475,7 +475,7 @@ void NodeList::processDomainServerList(QSharedPointer packet) { setThisNodeCanRez((bool) thisNodeCanRez); // pull each node in the packet - while (packetStream.device()->pos() < packet->getSizeUsed()) { + while (packetStream.device()->pos() < packet->getPayloadSize()) { parseNodeFromPacketStream(packetStream); } } diff --git a/libraries/networking/src/PacketReceiver.cpp b/libraries/networking/src/PacketReceiver.cpp index d7d2fdcd6b..3e03e689d5 100644 --- a/libraries/networking/src/PacketReceiver.cpp +++ b/libraries/networking/src/PacketReceiver.cpp @@ -236,7 +236,7 @@ void PacketReceiver::processDatagrams() { matchingNode->setLastSequenceNumberForPacketType(packet->readSequenceNumber(), packet->getType()); } - emit dataReceived(matchingNode->getType(), packet->getSizeWithHeader()); + emit dataReceived(matchingNode->getType(), packet->getDataSize()); QMetaMethod metaMethod = listener.second; static const QByteArray QSHAREDPOINTER_NODE_NORMALIZED = QMetaObject::normalizedType("QSharedPointer"); @@ -257,7 +257,7 @@ void PacketReceiver::processDatagrams() { Q_ARG(QSharedPointer, QSharedPointer(packet.release()))); } } else { - emit dataReceived(NodeType::Unassigned, packet->getSizeWithHeader()); + emit dataReceived(NodeType::Unassigned, packet->getDataSize()); success = listener.second.invoke(listener.first, Q_ARG(QSharedPointer, QSharedPointer(packet.release()))); diff --git a/libraries/networking/src/PacketSender.cpp b/libraries/networking/src/PacketSender.cpp index 3313403033..ee3d09cb75 100644 --- a/libraries/networking/src/PacketSender.cpp +++ b/libraries/networking/src/PacketSender.cpp @@ -54,7 +54,7 @@ void PacketSender::queuePacketForSending(const SharedNodePointer& destinationNod unlock(); _totalPacketsQueued++; - _totalBytesQueued += packet->getSizeWithHeader(); + _totalBytesQueued += packet->getDataSize(); // Make sure to wake our actual processing thread because we now have packets for it to process. _hasPackets.wakeAll(); @@ -278,7 +278,7 @@ bool PacketSender::nonThreadedProcess() { _packetsOverCheckInterval++; _totalPacketsSent++; - int packetSize = packetPair.second->getSizeWithHeader(); + int packetSize = packetPair.second->getDataSize(); _totalBytesSent += packetSize; emit packetSent(packetSize); diff --git a/libraries/networking/src/udt/Packet.cpp b/libraries/networking/src/udt/Packet.cpp index 975c137f27..23967ff997 100644 --- a/libraries/networking/src/udt/Packet.cpp +++ b/libraries/networking/src/udt/Packet.cpp @@ -71,8 +71,8 @@ Packet::Packet(PacketType::Value type, qint64 size) : _packetSize = localHeaderSize(type) + size; _packet.reset(new char[_packetSize]); - _capacity = size; - _payloadStart = _packet.get() + (_packetSize - _capacity); + _payloadCapacity = size; + _payloadStart = _packet.get() + (_packetSize - _payloadCapacity); // Sanity check Q_ASSERT(size >= 0 || size < maxPayload); @@ -93,9 +93,9 @@ Packet::Packet(std::unique_ptr data, qint64 size, const HifiSockAddr& send { _type = readType(); _version = readVersion(); - _capacity = _packetSize - localHeaderSize(_type); - _sizeUsed = _capacity; - _payloadStart = _packet.get() + (_packetSize - _capacity); + _payloadCapacity = _packetSize - localHeaderSize(_type); + _payloadSize = _payloadCapacity; + _payloadStart = _packet.get() + (_packetSize - _payloadCapacity); } Packet::Packet(const Packet& other) { @@ -110,9 +110,9 @@ Packet& Packet::operator=(const Packet& other) { memcpy(_packet.get(), other._packet.get(), _packetSize); _payloadStart = _packet.get() + (other._payloadStart - other._packet.get()); - _capacity = other._capacity; + _payloadCapacity = other._payloadCapacity; - _sizeUsed = other._sizeUsed; + _payloadSize = other._payloadSize; return *this; } @@ -128,13 +128,31 @@ Packet& Packet::operator=(Packet&& other) { _packet = std::move(other._packet); _payloadStart = other._payloadStart; - _capacity = other._capacity; + _payloadCapacity = other._payloadCapacity; - _sizeUsed = other._sizeUsed; + _payloadSize = other._payloadSize; return *this; } +void Packet::setPayloadSize(qint64 payloadSize) { + if (isWritable()) { + Q_ASSERT(payloadSize > _payloadCapacity); + _payloadSize = std::max(payloadSize, _payloadCapacity); + } else { + qDebug() << "You can not call setPayloadSize for a non-writeable Packet."; + Q_ASSERT(false); + } +} + +bool Packet::reset() { + if (isWritable()) { + setPayloadSize(0); + } + + return QIODevice::reset(); +} + void Packet::setType(PacketType::Value type) { auto currentHeaderSize = totalHeadersSize(); _type = type; @@ -197,13 +215,13 @@ qint64 Packet::writeData(const char* data, qint64 maxSize) { if (maxSize <= bytesAvailableForWrite()) { qint64 currentPos = pos(); - Q_ASSERT(currentPos < _capacity); + Q_ASSERT(currentPos < _payloadCapacity); // good to go - write the data memcpy(_payloadStart + currentPos, data, maxSize); - // keep track of _sizeUsed so we can just write the actual data when packet is about to be sent - _sizeUsed = std::max(currentPos + maxSize, _sizeUsed); + // keep track of _payloadSize so we can just write the actual data when packet is about to be sent + _payloadSize = std::max(currentPos + maxSize, _payloadSize); // return the number of bytes written return maxSize; diff --git a/libraries/networking/src/udt/Packet.h b/libraries/networking/src/udt/Packet.h index 1e18dde117..9e68272ccf 100644 --- a/libraries/networking/src/udt/Packet.h +++ b/libraries/networking/src/udt/Packet.h @@ -49,11 +49,14 @@ public: PacketVersion getVersion() const { return _version; } - qint64 getSizeWithHeader() const { return totalHeadersSize() + getSizeUsed(); } - qint64 getSizeUsed() const { return _sizeUsed; } - void setSizeUsed(qint64 sizeUsed) { _sizeUsed = sizeUsed; } + qint64 getDataSize() const { return totalHeadersSize() + getPayloadSize(); } + + qint64 getPayloadSize() const { return _payloadSize; } + void setPayloadSize(qint64 payloadSize); - qint64 bytesAvailableForWrite() const { return _capacity - _sizeUsed; } + qint64 getPayloadCapacity() const { return _payloadCapacity; } + + qint64 bytesAvailableForWrite() const { return _payloadCapacity - _payloadSize; } HifiSockAddr& getSenderSockAddr() { return _senderSockAddr; } const HifiSockAddr& getSenderSockAddr() const { return _senderSockAddr; } @@ -64,8 +67,8 @@ public: // QIODevice virtual functions // WARNING: Those methods all refer to the payload ONLY and NOT the entire packet virtual bool isSequential() const { return false; } - virtual bool reset() { setSizeUsed(0); return QIODevice::reset(); } - virtual qint64 size() const { return _capacity; } + virtual bool reset(); + virtual qint64 size() const { return _payloadCapacity; } template qint64 peekPrimitive(T* data); template qint64 readPrimitive(T* data); @@ -98,9 +101,9 @@ protected: std::unique_ptr _packet; // Allocated memory char* _payloadStart = nullptr; // Start of the payload - qint64 _capacity = 0; // Total capacity of the payload + qint64 _payloadCapacity = 0; // Total capacity of the payload - qint64 _sizeUsed = 0; // How much of the payload is actually used + qint64 _payloadSize = 0; // How much of the payload is actually used HifiSockAddr _senderSockAddr; // sender address for packet (only used on receiving end) }; diff --git a/libraries/networking/src/udt/PacketList.cpp b/libraries/networking/src/udt/PacketList.cpp index 675645abc2..909515f8a7 100644 --- a/libraries/networking/src/udt/PacketList.cpp +++ b/libraries/networking/src/udt/PacketList.cpp @@ -90,7 +90,7 @@ qint64 PacketList::writeData(const char* data, qint64 maxSize) { _segmentStartIndex = 0; // shrink the current payload to the actual size of the packet - _currentPacket->setSizeUsed(_segmentStartIndex); + _currentPacket->setPayloadSize(_segmentStartIndex); } // move the current packet to our list of packets diff --git a/libraries/octree/src/OctreeEditPacketSender.cpp b/libraries/octree/src/OctreeEditPacketSender.cpp index 6f2780d871..e8a618de26 100644 --- a/libraries/octree/src/OctreeEditPacketSender.cpp +++ b/libraries/octree/src/OctreeEditPacketSender.cpp @@ -103,7 +103,7 @@ void OctreeEditPacketSender::queuePacketToNode(const QUuid& nodeUUID, std::uniqu quint64 transitTime = queuedAt - createdAt; qCDebug(octree) << "OctreeEditPacketSender::queuePacketToNode() queued " << packet->getType() - << " - command to node bytes=" << packet->getSizeWithHeader() + << " - command to node bytes=" << packet->getDataSize() << " sequence=" << sequence << " transitTimeSoFar=" << transitTime << " usecs"; } @@ -254,7 +254,7 @@ void OctreeEditPacketSender::queueOctreeEditMessage(PacketType::Value type, QByt bufferedPacket = NLPacket::create(type); } else { // If we're switching type, then we send the last one and start over - if ((type != bufferedPacket->getType() && bufferedPacket->getSizeUsed() > 0) || + if ((type != bufferedPacket->getType() && bufferedPacket->getPayloadSize() > 0) || (editMessage.size() >= bufferedPacket->bytesAvailableForWrite())) { // create the new packet and swap it with the packet in _pendingEditPackets @@ -307,7 +307,7 @@ void OctreeEditPacketSender::releaseQueuedMessages() { void OctreeEditPacketSender::releaseQueuedPacket(const QUuid& nodeID, std::unique_ptr packet) { _releaseQueuedPacketMutex.lock(); - if (packet->getSizeUsed() > 0 && packet->getType() != PacketType::Unknown) { + if (packet->getPayloadSize() > 0 && packet->getType() != PacketType::Unknown) { queuePacketToNode(nodeID, std::move(packet)); } _releaseQueuedPacketMutex.unlock(); diff --git a/libraries/octree/src/OctreeRenderer.cpp b/libraries/octree/src/OctreeRenderer.cpp index 9f4cd0d1a1..7df9ace530 100644 --- a/libraries/octree/src/OctreeRenderer.cpp +++ b/libraries/octree/src/OctreeRenderer.cpp @@ -90,7 +90,7 @@ void OctreeRenderer::processDatagram(NLPacket& packet, SharedNodePointer sourceN qCDebug(octree, "OctreeRenderer::processDatagram() ... Got Packet Section" " color:%s compressed:%s sequence: %u flight:%d usec size:%lld data:%lld", debug::valueOf(packetIsColored), debug::valueOf(packetIsCompressed), - sequence, flightTime, packet.getSizeWithHeader(), packet.bytesAvailable()); + sequence, flightTime, packet.getDataSize(), packet.bytesAvailable()); } _packetsInLastWindow++; @@ -139,7 +139,7 @@ void OctreeRenderer::processDatagram(NLPacket& packet, SharedNodePointer sourceN " color:%s compressed:%s sequence: %u flight:%d usec size:%lld data:%lld" " subsection:%d sectionLength:%d uncompressed:%d", debug::valueOf(packetIsColored), debug::valueOf(packetIsCompressed), - sequence, flightTime, packet.getSizeWithHeader(), packet.bytesAvailable(), subsection, sectionLength, + sequence, flightTime, packet.getDataSize(), packet.bytesAvailable(), subsection, sectionLength, packetData.getUncompressedSize()); } diff --git a/libraries/octree/src/OctreeSceneStats.cpp b/libraries/octree/src/OctreeSceneStats.cpp index 6507d10727..55213fdb7a 100644 --- a/libraries/octree/src/OctreeSceneStats.cpp +++ b/libraries/octree/src/OctreeSceneStats.cpp @@ -439,7 +439,7 @@ int OctreeSceneStats::packIntoPacket() { _statsPacket->writePrimitive(bytes); } - return _statsPacket->getSizeUsed(); + return _statsPacket->getPayloadSize(); } int OctreeSceneStats::unpackFromPacket(NLPacket& packet) { @@ -789,8 +789,8 @@ void OctreeSceneStats::trackIncomingOctreePacket(NLPacket& packet, bool wasStats // track packets here... _incomingPacket++; - _incomingBytes += packet.getSizeWithHeader(); + _incomingBytes += packet.getDataSize(); if (!wasStatsPacket) { - _incomingWastedBytes += (MAX_PACKET_SIZE - packet.getSizeWithHeader()); + _incomingWastedBytes += (MAX_PACKET_SIZE - packet.getDataSize()); } } From 44c99ef89ad9f834fbb5907179e298b1d358286f Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 15 Jul 2015 10:44:51 -0700 Subject: [PATCH 2/7] Replace bytesAvailable with bytesLefToRead --- .../src/octree/OctreeInboundPacketProcessor.cpp | 6 +++--- domain-server/src/DomainServer.cpp | 4 ++-- libraries/avatars/src/AvatarHashMap.cpp | 4 ++-- libraries/entities/src/EntityTree.cpp | 2 +- libraries/networking/src/udt/Packet.cpp | 2 +- libraries/networking/src/udt/Packet.h | 3 ++- libraries/octree/src/JurisdictionMap.cpp | 4 ++-- libraries/octree/src/OctreeRenderer.cpp | 10 +++++----- libraries/render-utils/src/Environment.cpp | 4 ++-- 9 files changed, 20 insertions(+), 19 deletions(-) diff --git a/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp b/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp index 2b31b2f2a2..0cb6eae9ed 100644 --- a/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp +++ b/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp @@ -136,18 +136,18 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet if (debugProcessPacket) { qDebug() << " atByte (in payload)=" << packet->pos(); qDebug() << " payload size=" << packet->getSizeUsed(); - if (!packet->bytesAvailable()) { + if (!packet->bytesLeftToRead()) { qDebug() << " ----- UNEXPECTED ---- got a packet without any edit details!!!! --------"; } } const unsigned char* editData = nullptr; - while (packet->bytesAvailable() > 0) { + while (packet->bytesLeftToRead() > 0) { editData = reinterpret_cast(packet->getPayload() + packet->pos()); - int maxSize = packet->bytesAvailable(); + int maxSize = packet->bytesLeftToRead(); if (debugProcessPacket) { qDebug() << " --- inside while loop ---"; diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 1824446fca..625f50d432 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -2190,7 +2190,7 @@ void DomainServer::processPathQueryPacket(QSharedPointer packet) { quint16 numPathBytes; packet->readPrimitive(&numPathBytes); - if (numPathBytes <= packet->bytesAvailable()) { + if (numPathBytes <= packet->bytesLeftToRead()) { // the number of path bytes makes sense for the sent packet - pull out the path QString pathQuery = QString::fromUtf8(packet->getPayload() + packet->pos(), numPathBytes); @@ -2223,7 +2223,7 @@ void DomainServer::processPathQueryPacket(QSharedPointer packet) { // are we going to be able to fit this response viewpoint in a packet? if (numPathBytes + numViewpointBytes + sizeof(numViewpointBytes) + sizeof(numPathBytes) - < (unsigned long) pathResponsePacket->bytesAvailable()) { + < (unsigned long) pathResponsePacket->bytesLeftToRead()) { // append the number of bytes this path is pathResponsePacket->writePrimitive(numPathBytes); diff --git a/libraries/avatars/src/AvatarHashMap.cpp b/libraries/avatars/src/AvatarHashMap.cpp index ac8982f8e8..ebabb1115b 100644 --- a/libraries/avatars/src/AvatarHashMap.cpp +++ b/libraries/avatars/src/AvatarHashMap.cpp @@ -56,7 +56,7 @@ void AvatarHashMap::processAvatarDataPacket(QSharedPointer packet, Sha // enumerate over all of the avatars in this packet // only add them if mixerWeakPointer points to something (meaning that mixer is still around) - while (packet->bytesAvailable()) { + while (packet->bytesLeftToRead()) { QUuid sessionUUID = QUuid::fromRfc4122(packet->read(NUM_BYTES_RFC4122_UUID)); if (sessionUUID != _lastOwnerSessionUUID) { @@ -121,7 +121,7 @@ void AvatarHashMap::processAvatarBillboardPacket(QSharedPointer packet avatar = addAvatar(sessionUUID, sendingNode); } - QByteArray billboard = packet->read(packet->bytesAvailable()); + QByteArray billboard = packet->read(packet->bytesLeftToRead()); if (avatar->getBillboard() != billboard) { avatar->setBillboard(billboard); } diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index cb4011c799..61bbde6f1a 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -867,7 +867,7 @@ int EntityTree::processEraseMessage(NLPacket& packet, const SharedNodePointer& s for (size_t i = 0; i < numberOfIDs; i++) { - if (NUM_BYTES_RFC4122_UUID > packet.bytesAvailable()) { + if (NUM_BYTES_RFC4122_UUID > packet.bytesLeftToRead()) { qCDebug(entities) << "EntityTree::processEraseMessage().... bailing because not enough bytes in buffer"; break; // bail to prevent buffer overflow } diff --git a/libraries/networking/src/udt/Packet.cpp b/libraries/networking/src/udt/Packet.cpp index 975c137f27..ac98ba9340 100644 --- a/libraries/networking/src/udt/Packet.cpp +++ b/libraries/networking/src/udt/Packet.cpp @@ -215,7 +215,7 @@ qint64 Packet::writeData(const char* data, qint64 maxSize) { qint64 Packet::readData(char* dest, qint64 maxSize) { // we're either reading what is left from the current position or what was asked to be read - qint64 numBytesToRead = std::min(bytesAvailable(), maxSize); + qint64 numBytesToRead = std::min(bytesLeftToRead(), maxSize); if (numBytesToRead > 0) { int currentPosition = pos(); diff --git a/libraries/networking/src/udt/Packet.h b/libraries/networking/src/udt/Packet.h index 1e18dde117..c7933606be 100644 --- a/libraries/networking/src/udt/Packet.h +++ b/libraries/networking/src/udt/Packet.h @@ -53,7 +53,8 @@ public: qint64 getSizeUsed() const { return _sizeUsed; } void setSizeUsed(qint64 sizeUsed) { _sizeUsed = sizeUsed; } - qint64 bytesAvailableForWrite() const { return _capacity - _sizeUsed; } + void bytesLeftToRead() const { return _capacity - pos(); } + qint64 bytesAvailableForWrite() const { return _capacity - pos(); } HifiSockAddr& getSenderSockAddr() { return _senderSockAddr; } const HifiSockAddr& getSenderSockAddr() const { return _senderSockAddr; } diff --git a/libraries/octree/src/JurisdictionMap.cpp b/libraries/octree/src/JurisdictionMap.cpp index 45cc1edef7..35806eb8a7 100644 --- a/libraries/octree/src/JurisdictionMap.cpp +++ b/libraries/octree/src/JurisdictionMap.cpp @@ -322,7 +322,7 @@ int JurisdictionMap::unpackFromPacket(NLPacket& packet) { int bytes = 0; packet.readPrimitive(&bytes); - if (bytes > 0 && bytes <= packet.bytesAvailable()) { + if (bytes > 0 && bytes <= packet.bytesLeftToRead()) { _rootOctalCode = new unsigned char[bytes]; packet.read(reinterpret_cast(_rootOctalCode), bytes); @@ -334,7 +334,7 @@ int JurisdictionMap::unpackFromPacket(NLPacket& packet) { int bytes = 0; packet.readPrimitive(&bytes); - if (bytes <= packet.bytesAvailable()) { + if (bytes <= packet.bytesLeftToRead()) { unsigned char* endNodeCode = new unsigned char[bytes]; packet.read(reinterpret_cast(endNodeCode), bytes); diff --git a/libraries/octree/src/OctreeRenderer.cpp b/libraries/octree/src/OctreeRenderer.cpp index 9f4cd0d1a1..db3ace67ce 100644 --- a/libraries/octree/src/OctreeRenderer.cpp +++ b/libraries/octree/src/OctreeRenderer.cpp @@ -90,7 +90,7 @@ void OctreeRenderer::processDatagram(NLPacket& packet, SharedNodePointer sourceN qCDebug(octree, "OctreeRenderer::processDatagram() ... Got Packet Section" " color:%s compressed:%s sequence: %u flight:%d usec size:%lld data:%lld", debug::valueOf(packetIsColored), debug::valueOf(packetIsCompressed), - sequence, flightTime, packet.getSizeWithHeader(), packet.bytesAvailable()); + sequence, flightTime, packet.getSizeWithHeader(), packet.bytesLeftToRead()); } _packetsInLastWindow++; @@ -108,16 +108,16 @@ void OctreeRenderer::processDatagram(NLPacket& packet, SharedNodePointer sourceN bool error = false; - while (packet.bytesAvailable() > 0 && !error) { + while (packet.bytesLeftToRead() > 0 && !error) { if (packetIsCompressed) { - if (packet.bytesAvailable() > (qint64) sizeof(OCTREE_PACKET_INTERNAL_SECTION_SIZE)) { + if (packet.bytesLeftToRead() > (qint64) sizeof(OCTREE_PACKET_INTERNAL_SECTION_SIZE)) { packet.readPrimitive(§ionLength); } else { sectionLength = 0; error = true; } } else { - sectionLength = packet.bytesAvailable(); + sectionLength = packet.bytesLeftToRead(); } if (sectionLength) { @@ -139,7 +139,7 @@ void OctreeRenderer::processDatagram(NLPacket& packet, SharedNodePointer sourceN " color:%s compressed:%s sequence: %u flight:%d usec size:%lld data:%lld" " subsection:%d sectionLength:%d uncompressed:%d", debug::valueOf(packetIsColored), debug::valueOf(packetIsCompressed), - sequence, flightTime, packet.getSizeWithHeader(), packet.bytesAvailable(), subsection, sectionLength, + sequence, flightTime, packet.getSizeWithHeader(), packet.bytesLeftToRead(), subsection, sectionLength, packetData.getUncompressedSize()); } diff --git a/libraries/render-utils/src/Environment.cpp b/libraries/render-utils/src/Environment.cpp index 1c878cf4c6..7b33ac1698 100644 --- a/libraries/render-utils/src/Environment.cpp +++ b/libraries/render-utils/src/Environment.cpp @@ -205,9 +205,9 @@ int Environment::processPacket(NLPacket& packet) { EnvironmentData newData; - while (packet.bytesAvailable() > 0) { + while (packet.bytesLeftToRead() > 0) { int dataLength = newData.parseData(reinterpret_cast(packet.getPayload() + packet.pos()), - packet.bytesAvailable()); + packet.bytesLeftToRead()); packet.seek(packet.pos() + dataLength); // update the mapping by address/ID From 95f401fa0f5e3c481e3b58e4f62fac16593410b1 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jul 2015 11:00:33 -0700 Subject: [PATCH 3/7] add comments to Packet methods --- libraries/networking/src/udt/Packet.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/networking/src/udt/Packet.h b/libraries/networking/src/udt/Packet.h index 343bb3f858..0ed02d28ee 100644 --- a/libraries/networking/src/udt/Packet.h +++ b/libraries/networking/src/udt/Packet.h @@ -49,9 +49,13 @@ public: PacketVersion getVersion() const { return _version; } + // Returns the size of the packet, including the header qint64 getDataSize() const { return totalHeadersSize() + getPayloadSize(); } + // Returns the size of the payload only qint64 getPayloadSize() const { return _payloadSize; } + + // Allows a writer to change the size of the payload used when writing directly void setPayloadSize(qint64 payloadSize); qint64 getPayloadCapacity() const { return _payloadCapacity; } From ca3285b0e4e8756d32909c418a294d3ab405d67a Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jul 2015 11:02:42 -0700 Subject: [PATCH 4/7] add a comment for getPayloadCapacity() --- libraries/networking/src/udt/Packet.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/Packet.h b/libraries/networking/src/udt/Packet.h index 0ed02d28ee..40d021f2fc 100644 --- a/libraries/networking/src/udt/Packet.h +++ b/libraries/networking/src/udt/Packet.h @@ -57,7 +57,8 @@ public: // Allows a writer to change the size of the payload used when writing directly void setPayloadSize(qint64 payloadSize); - + + // Returns the number of bytes allocated for the payload qint64 getPayloadCapacity() const { return _payloadCapacity; } qint64 bytesLeftToRead() const { return _payloadCapacity - pos(); } From 8b5026a81701653695c2842cbdc0ca7956fc7cfb Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jul 2015 11:17:26 -0700 Subject: [PATCH 5/7] cleanup some warnings --- interface/CMakeLists.txt | 19 +++++++++++++------ interface/src/ui/FlowLayout.cpp | 4 ++-- libraries/entities-renderer/CMakeLists.txt | 9 ++++++++- libraries/entities/CMakeLists.txt | 9 ++++++++- libraries/physics/CMakeLists.txt | 9 ++++++++- libraries/render-utils/src/TextRenderer.cpp | 4 ++-- tests/entities/src/main.cpp | 4 ++-- tests/physics/CMakeLists.txt | 10 ++++++++-- 8 files changed, 51 insertions(+), 17 deletions(-) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 017a9d3c5f..e9c1174016 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -105,10 +105,10 @@ if (APPLE) # set where in the bundle to put the resources file SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/icon/${ICON_FILENAME} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - set(DISCOVERED_RESOURCES "") + set(DISCOVERED_RESOURCES "") # use the add_resources_to_os_x_bundle macro to recurse into resources - add_resources_to_os_x_bundle("${CMAKE_CURRENT_SOURCE_DIR}/resources") + add_resources_to_os_x_bundle("${CMAKE_CURRENT_SOURCE_DIR}/resources") # append the discovered resources to our list of interface sources list(APPEND INTERFACE_SRCS ${DISCOVERED_RESOURCES}) @@ -136,12 +136,19 @@ target_include_directories(${TARGET_NAME} PRIVATE ${LIBOVR_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${LIBOVR_LIBRARIES}) find_package(Bullet REQUIRED) -target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) + +# perform the system include hack for OS X to ignore warnings +if (APPLE) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${BULLET_INCLUDE_DIRS}") +else() + target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) +endif() + target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) # link required hifi libraries -link_hifi_libraries(shared octree environment gpu model render fbx networking entities avatars - audio audio-client animation script-engine physics +link_hifi_libraries(shared octree environment gpu model render fbx networking entities avatars + audio audio-client animation script-engine physics render-utils entities-renderer ui auto-updater) add_dependency_external_projects(sdl2) @@ -185,7 +192,7 @@ foreach(EXTERNAL ${OPTIONAL_EXTERNALS}) endforeach() # special OS X modifications for RtMidi library -if (RTMIDI_FOUND AND NOT DISABLE_RTMIDI AND APPLE) +if (RTMIDI_FOUND AND NOT DISABLE_RTMIDI AND APPLE) find_library(CoreMIDI CoreMIDI) add_definitions(-D__MACOSX_CORE__) target_link_libraries(${TARGET_NAME} ${CoreMIDI}) diff --git a/interface/src/ui/FlowLayout.cpp b/interface/src/ui/FlowLayout.cpp index ed68204d90..c12de05629 100644 --- a/interface/src/ui/FlowLayout.cpp +++ b/interface/src/ui/FlowLayout.cpp @@ -38,14 +38,14 @@ ** ****************************************************************************/ -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdouble-promotion" #endif #include -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop #endif diff --git a/libraries/entities-renderer/CMakeLists.txt b/libraries/entities-renderer/CMakeLists.txt index 40ca1ccbc9..810d5f5843 100644 --- a/libraries/entities-renderer/CMakeLists.txt +++ b/libraries/entities-renderer/CMakeLists.txt @@ -9,7 +9,14 @@ target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) add_dependency_external_projects(bullet) find_package(Bullet REQUIRED) -target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) + +# perform the system include hack for OS X to ignore warnings +if (APPLE) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${BULLET_INCLUDE_DIRS}") +else() + target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) +endif() + target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) add_dependency_external_projects(polyvox) diff --git a/libraries/entities/CMakeLists.txt b/libraries/entities/CMakeLists.txt index 926fd8b4b2..f7936ff125 100644 --- a/libraries/entities/CMakeLists.txt +++ b/libraries/entities/CMakeLists.txt @@ -10,7 +10,14 @@ target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) add_dependency_external_projects(bullet) find_package(Bullet REQUIRED) -target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) + +# perform the system include hack for OS X to ignore warnings +if (APPLE) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${BULLET_INCLUDE_DIRS}") +else() + target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) +endif() + target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) link_hifi_libraries(avatars shared octree gpu model fbx networking animation environment) diff --git a/libraries/physics/CMakeLists.txt b/libraries/physics/CMakeLists.txt index 5e94513da4..b1f9fbb79c 100644 --- a/libraries/physics/CMakeLists.txt +++ b/libraries/physics/CMakeLists.txt @@ -10,7 +10,14 @@ target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) add_dependency_external_projects(bullet) find_package(Bullet REQUIRED) -target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) + +# perform the system include hack for OS X to ignore warnings +if (APPLE) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${BULLET_INCLUDE_DIRS}") +else() + target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) +endif() + target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) link_hifi_libraries(shared fbx entities) diff --git a/libraries/render-utils/src/TextRenderer.cpp b/libraries/render-utils/src/TextRenderer.cpp index fcd7bf2f2a..0354a0217f 100644 --- a/libraries/render-utils/src/TextRenderer.cpp +++ b/libraries/render-utils/src/TextRenderer.cpp @@ -18,7 +18,7 @@ #include #include -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdouble-promotion" #endif @@ -29,7 +29,7 @@ #include #include -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop #endif diff --git a/tests/entities/src/main.cpp b/tests/entities/src/main.cpp index a255ffa995..740d401107 100644 --- a/tests/entities/src/main.cpp +++ b/tests/entities/src/main.cpp @@ -109,7 +109,7 @@ void testPropertyFlags(uint32_t value) { } QByteArray encoded = original.encode(); #ifndef QT_NO_DEBUG - auto originalSize = encoded.size(); + int originalSize = encoded.size(); #endif for (size_t i = 0; i < enumSize; ++i) { encoded.append(qrand()); @@ -123,7 +123,7 @@ void testPropertyFlags(uint32_t value) { { #ifndef QT_NO_DEBUG - auto decodeSize = decodeNew.decode((const uint8_t*)encoded.data(), encoded.size()); + int decodeSize = decodeNew.decode((const uint8_t*)encoded.data(), encoded.size()); #endif Q_ASSERT(originalSize == decodeSize); Q_ASSERT(decodeNew == original); diff --git a/tests/physics/CMakeLists.txt b/tests/physics/CMakeLists.txt index 6059ca3b19..36cf21c681 100644 --- a/tests/physics/CMakeLists.txt +++ b/tests/physics/CMakeLists.txt @@ -8,11 +8,17 @@ macro (SETUP_TESTCASE_DEPENDENCIES) add_dependency_external_projects(bullet) find_package(Bullet REQUIRED) - target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) + + # perform the system include hack for OS X to ignore warnings + if (APPLE) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${BULLET_INCLUDE_DIRS}") + else() + target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) + endif() link_hifi_libraries(shared physics) copy_dlls_beside_windows_executable() endmacro () -setup_hifi_testcase(Script) \ No newline at end of file +setup_hifi_testcase(Script) From 7631af99e0336fc76c6f7f58a7b8f82817091536 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jul 2015 11:46:31 -0700 Subject: [PATCH 6/7] fix compile for new data size method --- libraries/networking/src/LimitedNodeList.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 9c90b8b348..3bc4d0ff74 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -227,7 +227,7 @@ void writePacketHeader(const NLPacket& packet, const QUuid& sessionUUID = QUuid( qint64 LimitedNodeList::writeDatagram(const NLPacket& packet, const HifiSockAddr& destinationSockAddr, const QUuid& connectionSecret) { writePacketHeader(packet, getSessionUUID(), connectionSecret); - return writeDatagram({packet.getData(), static_cast(packet.getSizeWithHeader())}, destinationSockAddr); + return writeDatagram({ packet.getData(), (int) packet.getDataSize() }, destinationSockAddr); } qint64 LimitedNodeList::writeDatagram(const QByteArray& datagram, const HifiSockAddr& destinationSockAddr) { From 0b700d690ac4aa2b1879aeaea7a2ac943a69727b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jul 2015 11:48:27 -0700 Subject: [PATCH 7/7] fix bad assert for payload size --- libraries/networking/src/udt/Packet.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/Packet.cpp b/libraries/networking/src/udt/Packet.cpp index 31c861dc3c..cfa90a43e4 100644 --- a/libraries/networking/src/udt/Packet.cpp +++ b/libraries/networking/src/udt/Packet.cpp @@ -137,7 +137,7 @@ Packet& Packet::operator=(Packet&& other) { void Packet::setPayloadSize(qint64 payloadSize) { if (isWritable()) { - Q_ASSERT(payloadSize > _payloadCapacity); + Q_ASSERT(payloadSize <= _payloadCapacity); _payloadSize = std::max(payloadSize, _payloadCapacity); } else { qDebug() << "You can not call setPayloadSize for a non-writeable Packet.";