| 145 | |
| 146 | template <class ReaderT, class WriterT> |
| 147 | void ReadAndWrite(ReaderT & reader, WriterT & writer, size_t bufferSize = 4 * 1024) |
| 148 | { |
| 149 | uint64_t size = reader.Size(); |
| 150 | std::vector<char> buffer(std::min(bufferSize, static_cast<size_t>(size))); |
| 151 | |
| 152 | while (size > 0) |
| 153 | { |
| 154 | size_t const curr = std::min(bufferSize, static_cast<size_t>(size)); |
| 155 | |
| 156 | reader.Read(&buffer[0], curr); |
| 157 | writer.Write(&buffer[0], curr); |
| 158 | |
| 159 | size -= curr; |
| 160 | } |
| 161 | } |
| 162 | } // namespace rw |