diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/utility/stream.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
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 <stream::value_type> 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 |
