void OctreeEditPacketSender::processPreServerExistsPackets() { assert(serversExist()); // we should only be here if we have jurisdictions // First send out all the single message packets... _pendingPacketsLock.lock(); while (!_preServerSingleMessagePackets.empty()) { EditPacketBuffer* packet = _preServerSingleMessagePackets.front(); queuePacketToNodes(&packet->_currentBuffer[0], packet->_currentSize); delete packet; _preServerSingleMessagePackets.erase(_preServerSingleMessagePackets.begin()); } // Then "process" all the packable messages... while (!_preServerPackets.empty()) { EditPacketBuffer* packet = _preServerPackets.front(); queueOctreeEditMessage(packet->_currentType, &packet->_currentBuffer[0], packet->_currentSize); delete packet; _preServerPackets.erase(_preServerPackets.begin()); } _pendingPacketsLock.unlock(); // if while waiting for the jurisdictions the caller called releaseQueuedMessages() // then we want to honor that request now. if (_releaseQueuedMessagesPending) { releaseQueuedMessages(); _releaseQueuedMessagesPending = false; } }
void EntityEditPacketSender::queueEraseEntityMessage(const EntityItemID& entityItemID) { if (!_shouldSend) { return; // bail early } QByteArray bufferOut(NLPacket::maxPayloadSize(PacketType::EntityErase), 0); if (EntityItemProperties::encodeEraseEntityMessage(entityItemID, bufferOut)) { queueOctreeEditMessage(PacketType::EntityErase, bufferOut); } }
void EntityEditPacketSender::queueEraseEntityMessage(const EntityItemID& entityItemID) { if (!_shouldSend) { return; // bail early } // use MAX_PACKET_SIZE since it's static and guaranteed to be larger than _maxPacketSize unsigned char bufferOut[MAX_PACKET_SIZE]; size_t sizeOut = 0; if (EntityItemProperties::encodeEraseEntityMessage(entityItemID, &bufferOut[0], _maxPacketSize, sizeOut)) { queueOctreeEditMessage(PacketTypeEntityErase, bufferOut, sizeOut); } }
void VoxelEditPacketSender::queueVoxelEditMessages(PacketType type, int numberOfDetails, VoxelDetail* details) { if (!_shouldSend) { return; // bail early } for (int i = 0; i < numberOfDetails; i++) { // use MAX_PACKET_SIZE since it's static and guarenteed to be larger than _maxPacketSize unsigned char bufferOut[MAX_PACKET_SIZE]; int sizeOut = 0; if (encodeVoxelEditMessageDetails(type, 1, &details[i], &bufferOut[0], _maxPacketSize, sizeOut)) { queueOctreeEditMessage(type, bufferOut, sizeOut, satoshiCostForMessage(details[i])); } } }
void EntityEditPacketSender::queueEraseEntityMessage(const EntityItemID& entityItemID) { if (!_shouldSend) { return; // bail early } // in case this was a clientOnly entity: if(_myAvatar) { _myAvatar->clearAvatarEntity(entityItemID); } QByteArray bufferOut(NLPacket::maxPayloadSize(PacketType::EntityErase), 0); if (EntityItemProperties::encodeEraseEntityMessage(entityItemID, bufferOut)) { queueOctreeEditMessage(PacketType::EntityErase, bufferOut); } }
void EntityEditPacketSender::queueEditEntityMessage(PacketType type, EntityItemID modelID, const EntityItemProperties& properties) { if (!_shouldSend) { return; // bail early } QByteArray bufferOut(NLPacket::maxPayloadSize(type), 0); if (EntityItemProperties::encodeEntityEditPacket(type, modelID, properties, bufferOut)) { #ifdef WANT_DEBUG qCDebug(entities) << "calling queueOctreeEditMessage()..."; qCDebug(entities) << " id:" << modelID; qCDebug(entities) << " properties:" << properties; #endif queueOctreeEditMessage(type, bufferOut); } }
void EntityEditPacketSender::queueEditEntityMessage(PacketType type, EntityItemID modelID, const EntityItemProperties& properties) { if (!_shouldSend) { return; // bail early } // use MAX_PACKET_SIZE since it's static and guaranteed to be larger than _maxPacketSize unsigned char bufferOut[MAX_PACKET_SIZE]; int sizeOut = 0; if (EntityItemProperties::encodeEntityEditPacket(type, modelID, properties, &bufferOut[0], _maxPacketSize, sizeOut)) { #ifdef WANT_DEBUG qCDebug(entities) << "calling queueOctreeEditMessage()..."; qCDebug(entities) << " id:" << modelID; qCDebug(entities) << " properties:" << properties; #endif queueOctreeEditMessage(type, bufferOut, sizeOut); } }