From 66592466adfc6b885aac13bbca4add57f6c383dc Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 30 Jul 2014 10:05:21 -0700 Subject: [PATCH] pipe satoshi cost down to queuePacketToNodes --- libraries/octree/src/EditPacketBuffer.cpp | 30 ++++++++++++++++ libraries/octree/src/EditPacketBuffer.h | 34 +++++++++++++++++++ .../octree/src/OctreeEditPacketSender.cpp | 18 ++++------ libraries/octree/src/OctreeEditPacketSender.h | 13 ++----- 4 files changed, 72 insertions(+), 23 deletions(-) create mode 100644 libraries/octree/src/EditPacketBuffer.cpp create mode 100644 libraries/octree/src/EditPacketBuffer.h diff --git a/libraries/octree/src/EditPacketBuffer.cpp b/libraries/octree/src/EditPacketBuffer.cpp new file mode 100644 index 0000000000..d6e7bf0183 --- /dev/null +++ b/libraries/octree/src/EditPacketBuffer.cpp @@ -0,0 +1,30 @@ +// +// EditPacketBuffer.cpp +// libraries/octree/src +// +// Created by Stephen Birarda on 2014-07-30. +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "EditPacketBuffer.h" + +EditPacketBuffer::EditPacketBuffer() : + _nodeUUID(), + _currentType(PacketTypeUnknown), + _currentSize(0), + _satoshiCost(0) +{ + +} + +EditPacketBuffer::EditPacketBuffer(PacketType type, unsigned char* buffer, ssize_t length, qint64 satoshiCost, QUuid nodeUUID) : + _nodeUUID(nodeUUID), + _currentType(type), + _currentSize(length), + _satoshiCost(satoshiCost) +{ + memcpy(_currentBuffer, buffer, length); +}; \ No newline at end of file diff --git a/libraries/octree/src/EditPacketBuffer.h b/libraries/octree/src/EditPacketBuffer.h new file mode 100644 index 0000000000..9b52cbc5e4 --- /dev/null +++ b/libraries/octree/src/EditPacketBuffer.h @@ -0,0 +1,34 @@ +// +// EditPacketBuffer.h +// libraries/octree/src +// +// Created by Stephen Birarda on 2014-07-30. +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_EditPacketBuffer_h +#define hifi_EditPacketBuffer_h + +#include + +#include +#include + +/// Used for construction of edit packets +class EditPacketBuffer { +public: + EditPacketBuffer(); + EditPacketBuffer(PacketType type, unsigned char* codeColorBuffer, ssize_t length, + qint64 satoshiCost = 0, const QUuid nodeUUID = QUuid()); + + QUuid _nodeUUID; + PacketType _currentType; + unsigned char _currentBuffer[MAX_PACKET_SIZE]; + ssize_t _currentSize; + qint64 _satoshiCost; +}; + +#endif // hifi_EditPacketBuffer_h \ No newline at end of file diff --git a/libraries/octree/src/OctreeEditPacketSender.cpp b/libraries/octree/src/OctreeEditPacketSender.cpp index 1d0c40d659..b9891f0628 100644 --- a/libraries/octree/src/OctreeEditPacketSender.cpp +++ b/libraries/octree/src/OctreeEditPacketSender.cpp @@ -17,14 +17,6 @@ #include #include "OctreeEditPacketSender.h" -EditPacketBuffer::EditPacketBuffer(PacketType type, unsigned char* buffer, ssize_t length, QUuid nodeUUID) : - _nodeUUID(nodeUUID), - _currentType(type), - _currentSize(length) -{ - memcpy(_currentBuffer, buffer, length); -}; - const int OctreeEditPacketSender::DEFAULT_MAX_PENDING_MESSAGES = PacketSender::DEFAULT_PACKETS_PER_SECOND; @@ -136,7 +128,7 @@ void OctreeEditPacketSender::processPreServerExistsPackets() { _pendingPacketsLock.lock(); while (!_preServerSingleMessagePackets.empty()) { EditPacketBuffer* packet = _preServerSingleMessagePackets.front(); - queuePacketToNodes(&packet->_currentBuffer[0], packet->_currentSize); + queuePacketToNodes(&packet->_currentBuffer[0], packet->_currentSize, packet->_satoshiCost); delete packet; _preServerSingleMessagePackets.erase(_preServerSingleMessagePackets.begin()); } @@ -163,7 +155,7 @@ void OctreeEditPacketSender::queuePendingPacketToNodes(PacketType type, unsigned // If we're asked to save messages while waiting for voxel servers to arrive, then do so... if (_maxPendingMessages > 0) { - EditPacketBuffer* packet = new EditPacketBuffer(type, buffer, length); + EditPacketBuffer* packet = new EditPacketBuffer(type, buffer, length, satoshiCost); _pendingPacketsLock.lock(); _preServerSingleMessagePackets.push_back(packet); // if we've saved MORE than our max, then clear out the oldest packet... @@ -204,7 +196,7 @@ void OctreeEditPacketSender::queuePacketToNodes(unsigned char* buffer, ssize_t l isMyJurisdiction = (map.isMyJurisdiction(octCode, CHECK_NODE_ONLY) == JurisdictionMap::WITHIN); _serverJurisdictions->unlock(); if (isMyJurisdiction) { - queuePacketToNode(nodeUUID, buffer, length); + queuePacketToNode(nodeUUID, buffer, length, satoshiCost); } } } @@ -288,6 +280,7 @@ void OctreeEditPacketSender::queueOctreeEditMessage(PacketType type, unsigned ch memcpy(&packetBuffer._currentBuffer[packetBuffer._currentSize], codeColorBuffer, length); packetBuffer._currentSize += length; + packetBuffer._satoshiCost += satoshiCost; } } } @@ -309,7 +302,8 @@ void OctreeEditPacketSender::releaseQueuedMessages() { void OctreeEditPacketSender::releaseQueuedPacket(EditPacketBuffer& packetBuffer) { _releaseQueuedPacketMutex.lock(); if (packetBuffer._currentSize > 0 && packetBuffer._currentType != PacketTypeUnknown) { - queuePacketToNode(packetBuffer._nodeUUID, &packetBuffer._currentBuffer[0], packetBuffer._currentSize); + queuePacketToNode(packetBuffer._nodeUUID, &packetBuffer._currentBuffer[0], + packetBuffer._currentSize, packetBuffer._satoshiCost); packetBuffer._currentSize = 0; packetBuffer._currentType = PacketTypeUnknown; } diff --git a/libraries/octree/src/OctreeEditPacketSender.h b/libraries/octree/src/OctreeEditPacketSender.h index ad2526b866..d11aa55963 100644 --- a/libraries/octree/src/OctreeEditPacketSender.h +++ b/libraries/octree/src/OctreeEditPacketSender.h @@ -15,20 +15,11 @@ #include #include #include + +#include "EditPacketBuffer.h" #include "JurisdictionMap.h" #include "SentPacketHistory.h" -/// Used for construction of edit packets -class EditPacketBuffer { -public: - EditPacketBuffer() : _nodeUUID(), _currentType(PacketTypeUnknown), _currentSize(0) { } - EditPacketBuffer(PacketType type, unsigned char* codeColorBuffer, ssize_t length, const QUuid nodeUUID = QUuid()); - QUuid _nodeUUID; - PacketType _currentType; - unsigned char _currentBuffer[MAX_PACKET_SIZE]; - ssize_t _currentSize; -}; - /// Utility for processing, packing, queueing and sending of outbound edit messages. class OctreeEditPacketSender : public PacketSender { Q_OBJECT