From 6d72705df23fbdb0eccb085ff984cd93c38e4166 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sat, 20 Apr 2013 16:39:20 +0200 Subject: [PATCH] Small optimization to Metacube output. --- stream.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/stream.cpp b/stream.cpp index 17b5949..ae31308 100644 --- a/stream.cpp +++ b/stream.cpp @@ -206,9 +206,20 @@ void Stream::add_data_deferred(const char *data, size_t bytes) hdr.flags = htonl(0); iovec iov; - iov.iov_base = new char[sizeof(hdr)]; + iov.iov_base = new char[bytes + sizeof(hdr)]; + iov.iov_len = bytes + sizeof(hdr); + memcpy(iov.iov_base, &hdr, sizeof(hdr)); - iov.iov_len = sizeof(hdr); + memcpy(reinterpret_cast(iov.iov_base) + sizeof(hdr), data, bytes); + + queued_data.push_back(iov); + } else if (encoding == Stream::STREAM_ENCODING_RAW) { + // Just add the data itself. + iovec iov; + iov.iov_base = new char[bytes]; + memcpy(iov.iov_base, data, bytes); + iov.iov_len = bytes; + queued_data.push_back(iov); } else { assert(encoding == Stream::STREAM_ENCODING_RAW); -- 2.39.2