mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 16:41:02 +02:00
pipe satoshi cost down to queuePacketToNodes
This commit is contained in:
parent
2c8808e922
commit
66592466ad
4 changed files with 72 additions and 23 deletions
30
libraries/octree/src/EditPacketBuffer.cpp
Normal file
30
libraries/octree/src/EditPacketBuffer.cpp
Normal file
|
@ -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);
|
||||||
|
};
|
34
libraries/octree/src/EditPacketBuffer.h
Normal file
34
libraries/octree/src/EditPacketBuffer.h
Normal file
|
@ -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 <QtCore/QUuid>
|
||||||
|
|
||||||
|
#include <LimitedNodeList.h>
|
||||||
|
#include <PacketHeaders.h>
|
||||||
|
|
||||||
|
/// 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
|
|
@ -17,14 +17,6 @@
|
||||||
#include <PacketHeaders.h>
|
#include <PacketHeaders.h>
|
||||||
#include "OctreeEditPacketSender.h"
|
#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;
|
const int OctreeEditPacketSender::DEFAULT_MAX_PENDING_MESSAGES = PacketSender::DEFAULT_PACKETS_PER_SECOND;
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,7 +128,7 @@ void OctreeEditPacketSender::processPreServerExistsPackets() {
|
||||||
_pendingPacketsLock.lock();
|
_pendingPacketsLock.lock();
|
||||||
while (!_preServerSingleMessagePackets.empty()) {
|
while (!_preServerSingleMessagePackets.empty()) {
|
||||||
EditPacketBuffer* packet = _preServerSingleMessagePackets.front();
|
EditPacketBuffer* packet = _preServerSingleMessagePackets.front();
|
||||||
queuePacketToNodes(&packet->_currentBuffer[0], packet->_currentSize);
|
queuePacketToNodes(&packet->_currentBuffer[0], packet->_currentSize, packet->_satoshiCost);
|
||||||
delete packet;
|
delete packet;
|
||||||
_preServerSingleMessagePackets.erase(_preServerSingleMessagePackets.begin());
|
_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 we're asked to save messages while waiting for voxel servers to arrive, then do so...
|
||||||
|
|
||||||
if (_maxPendingMessages > 0) {
|
if (_maxPendingMessages > 0) {
|
||||||
EditPacketBuffer* packet = new EditPacketBuffer(type, buffer, length);
|
EditPacketBuffer* packet = new EditPacketBuffer(type, buffer, length, satoshiCost);
|
||||||
_pendingPacketsLock.lock();
|
_pendingPacketsLock.lock();
|
||||||
_preServerSingleMessagePackets.push_back(packet);
|
_preServerSingleMessagePackets.push_back(packet);
|
||||||
// if we've saved MORE than our max, then clear out the oldest 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);
|
isMyJurisdiction = (map.isMyJurisdiction(octCode, CHECK_NODE_ONLY) == JurisdictionMap::WITHIN);
|
||||||
_serverJurisdictions->unlock();
|
_serverJurisdictions->unlock();
|
||||||
if (isMyJurisdiction) {
|
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);
|
memcpy(&packetBuffer._currentBuffer[packetBuffer._currentSize], codeColorBuffer, length);
|
||||||
packetBuffer._currentSize += length;
|
packetBuffer._currentSize += length;
|
||||||
|
packetBuffer._satoshiCost += satoshiCost;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -309,7 +302,8 @@ void OctreeEditPacketSender::releaseQueuedMessages() {
|
||||||
void OctreeEditPacketSender::releaseQueuedPacket(EditPacketBuffer& packetBuffer) {
|
void OctreeEditPacketSender::releaseQueuedPacket(EditPacketBuffer& packetBuffer) {
|
||||||
_releaseQueuedPacketMutex.lock();
|
_releaseQueuedPacketMutex.lock();
|
||||||
if (packetBuffer._currentSize > 0 && packetBuffer._currentType != PacketTypeUnknown) {
|
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._currentSize = 0;
|
||||||
packetBuffer._currentType = PacketTypeUnknown;
|
packetBuffer._currentType = PacketTypeUnknown;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,20 +15,11 @@
|
||||||
#include <qqueue.h>
|
#include <qqueue.h>
|
||||||
#include <PacketSender.h>
|
#include <PacketSender.h>
|
||||||
#include <PacketHeaders.h>
|
#include <PacketHeaders.h>
|
||||||
|
|
||||||
|
#include "EditPacketBuffer.h"
|
||||||
#include "JurisdictionMap.h"
|
#include "JurisdictionMap.h"
|
||||||
#include "SentPacketHistory.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.
|
/// Utility for processing, packing, queueing and sending of outbound edit messages.
|
||||||
class OctreeEditPacketSender : public PacketSender {
|
class OctreeEditPacketSender : public PacketSender {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
Loading…
Reference in a new issue