From afc1548ac40021a3ce53b9e0d45cfe327f69548d Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Sat, 18 Nov 2006 09:27:30 +0000 Subject: Preferred block size for streams. --- src/utility/stream.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/utility/stream.cpp b/src/utility/stream.cpp index f2a89a55..48869958 100644 --- a/src/utility/stream.cpp +++ b/src/utility/stream.cpp @@ -32,6 +32,14 @@ namespace vmime { namespace utility { +// stream + +const stream::size_type stream::getBlockSize() const +{ + return 32768; // 32 KB +} + + // Helpers outputStream& operator<<(outputStream& os, const stream::value_type c) @@ -57,7 +65,12 @@ const stream::size_type bufferedStreamCopy(inputStream& is, outputStream& os) const stream::size_type bufferedStreamCopy(inputStream& is, outputStream& os, const stream::size_type length, progressListener* progress) { - stream::value_type buffer[16384]; + const stream::size_type blockSize = + std::min(is.getBlockSize(), os.getBlockSize()); + + std::vector vbuffer(blockSize); + + stream::value_type* buffer = &vbuffer.front(); stream::size_type total = 0; if (progress != NULL) @@ -443,6 +456,13 @@ void outputStreamSocketAdapter::flush() } +const stream::size_type outputStreamSocketAdapter::getBlockSize() const +{ + return 16384; // 16 KB +} + + + // inputStreamSocketAdapter inputStreamSocketAdapter::inputStreamSocketAdapter(net::socket& sok) @@ -479,6 +499,12 @@ const stream::size_type inputStreamSocketAdapter::skip } +const stream::size_type inputStreamSocketAdapter::getBlockSize() const +{ + return 16384; // 16 KB +} + + #endif // VMIME_HAVE_MESSAGING_FEATURES -- cgit v1.2.3