| 221 | } |
| 222 | |
| 223 | void Message::write(QIODevice *device) const |
| 224 | { |
| 225 | Q_ASSERT(m_objectAddress != Protocol::InvalidObjectAddress); |
| 226 | Q_ASSERT(m_messageType != Protocol::InvalidMessageType); |
| 227 | static const bool compressionEnabled = qEnvironmentVariableIntValue("GAMMARAY_DISABLE_LZ4") != 1; |
| 228 | const int buffSize = m_buffer->data.size(); |
| 229 | auto &compressedData = m_buffer->scratchSpace; |
| 230 | if (buffSize > minimumUncompressedSize && compressionEnabled) |
| 231 | compress(m_buffer->data.buffer(), compressedData); |
| 232 | |
| 233 | const bool isCompressed = compressedData.size() && compressedData.size() < buffSize; |
| 234 | if (isCompressed) |
| 235 | writeNumber<Protocol::PayloadSize>(device, -compressedData.size()); // send compressed Buffer |
| 236 | else |
| 237 | writeNumber<Protocol::PayloadSize>(device, buffSize); // send uncompressed Buffer |
| 238 | |
| 239 | writeNumber(device, m_objectAddress); |
| 240 | writeNumber(device, m_messageType); |
| 241 | |
| 242 | if (buffSize) { |
| 243 | if (isCompressed) { |
| 244 | const int s = device->write(compressedData); |
| 245 | Q_ASSERT(s == compressedData.size()); |
| 246 | Q_UNUSED(s); |
| 247 | } else { |
| 248 | const int s = device->write(m_buffer->data.buffer()); |
| 249 | Q_ASSERT(s == m_buffer->data.size()); |
| 250 | Q_UNUSED(s); |
| 251 | } |
| 252 | } |
| 253 | } |
| 254 | |
| 255 | int Message::size() const |
| 256 | { |