diff options
author | Vincent Richard <[email protected]> | 2006-11-18 09:27:30 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2006-11-18 09:27:30 +0000 |
commit | afc1548ac40021a3ce53b9e0d45cfe327f69548d (patch) | |
tree | 3be6b70f829f7034e41f64a35d2ec4169a1b86cf /src | |
parent | Temporary fix for socket stream copy. (diff) | |
download | vmime-afc1548ac40021a3ce53b9e0d45cfe327f69548d.tar.gz vmime-afc1548ac40021a3ce53b9e0d45cfe327f69548d.zip |
Preferred block size for streams.
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 |