mirror of
https://github.com/lubosz/overte.git
synced 2025-04-23 17:54:00 +02:00
add support for tuning the size of packets used by VoxelEditPacketSender
This commit is contained in:
parent
eb73de6b67
commit
977b730fc0
3 changed files with 21 additions and 5 deletions
|
@ -50,6 +50,12 @@ public slots:
|
|||
/// \param scale the scale of the voxel (in VS space)
|
||||
void queueVoxelDelete(float x, float y, float z, float scale);
|
||||
|
||||
/// Set the desired max packet size in bytes that should be created
|
||||
void setMaxPacketSize(int maxPacketSize) { return _voxelPacketSender.setMaxPacketSize(maxPacketSize); }
|
||||
|
||||
/// returns the current desired max packet size in bytes that will be created
|
||||
int getMaxPacketSize() const { return _voxelPacketSender.getMaxPacketSize(); }
|
||||
|
||||
/// set the max packets per second send rate
|
||||
void setPacketsPerSecond(int packetsPerSecond) { return _voxelPacketSender.setPacketsPerSecond(packetsPerSecond); }
|
||||
|
||||
|
|
|
@ -33,7 +33,8 @@ VoxelEditPacketSender::VoxelEditPacketSender(PacketSenderNotify* notify) :
|
|||
_maxPendingMessages(DEFAULT_MAX_PENDING_MESSAGES),
|
||||
_releaseQueuedMessagesPending(false),
|
||||
_voxelServerJurisdictions(NULL),
|
||||
_sequenceNumber(0) {
|
||||
_sequenceNumber(0),
|
||||
_maxPacketSize(MAX_PACKET_SIZE) {
|
||||
}
|
||||
|
||||
VoxelEditPacketSender::~VoxelEditPacketSender() {
|
||||
|
@ -146,10 +147,11 @@ void VoxelEditPacketSender::queueVoxelEditMessages(PACKET_TYPE type, int numberO
|
|||
}
|
||||
|
||||
for (int i = 0; i < numberOfDetails; i++) {
|
||||
static unsigned char bufferOut[MAX_PACKET_SIZE];
|
||||
// use MAX_PACKET_SIZE since it's static and guarenteed to be larger than _maxPacketSize
|
||||
static unsigned char bufferOut[MAX_PACKET_SIZE];
|
||||
int sizeOut = 0;
|
||||
|
||||
if (encodeVoxelEditMessageDetails(type, 1, &details[i], &bufferOut[0], MAX_PACKET_SIZE, sizeOut)) {
|
||||
if (encodeVoxelEditMessageDetails(type, 1, &details[i], &bufferOut[0], _maxPacketSize, sizeOut)) {
|
||||
queueVoxelEditMessage(type, bufferOut, sizeOut);
|
||||
}
|
||||
}
|
||||
|
@ -261,7 +263,7 @@ void VoxelEditPacketSender::queueVoxelEditMessage(PACKET_TYPE type, unsigned cha
|
|||
|
||||
// If we're switching type, then we send the last one and start over
|
||||
if ((type != packetBuffer._currentType && packetBuffer._currentSize > 0) ||
|
||||
(packetBuffer._currentSize + length >= MAX_PACKET_SIZE)) {
|
||||
(packetBuffer._currentSize + length >= _maxPacketSize)) {
|
||||
releaseQueuedPacket(packetBuffer);
|
||||
initializePacket(packetBuffer, type);
|
||||
}
|
||||
|
|
|
@ -83,9 +83,16 @@ public:
|
|||
|
||||
// the default number of pending messages we will store if no voxel servers are available
|
||||
static const int DEFAULT_MAX_PENDING_MESSAGES;
|
||||
|
||||
|
||||
// is there a voxel server available to send packets to
|
||||
bool voxelServersExist() const;
|
||||
|
||||
/// Set the desired max packet size in bytes that the VoxelEditPacketSender should create
|
||||
void setMaxPacketSize(int maxPacketSize) { _maxPacketSize = maxPacketSize; }
|
||||
|
||||
/// returns the current desired max packet size in bytes that the VoxelEditPacketSender will create
|
||||
int getMaxPacketSize() const { return _maxPacketSize; }
|
||||
|
||||
private:
|
||||
bool _shouldSend;
|
||||
void queuePacketToNode(const QUuid& nodeID, unsigned char* buffer, ssize_t length);
|
||||
|
@ -107,5 +114,6 @@ private:
|
|||
NodeToJurisdictionMap* _voxelServerJurisdictions;
|
||||
|
||||
unsigned short int _sequenceNumber;
|
||||
int _maxPacketSize;
|
||||
};
|
||||
#endif // __shared__VoxelEditPacketSender__
|
||||
|
|
Loading…
Reference in a new issue