| 161 | |
| 162 | |
| 163 | int HTTPChunkedStreamBuf::writeToDevice(const char* buffer, std::streamsize length) |
| 164 | { |
| 165 | _chunkBuffer.clear(); |
| 166 | NumberFormatter::appendHex(_chunkBuffer, length); |
| 167 | _chunkBuffer.append("\r\n", 2); |
| 168 | _chunkBuffer.append(buffer, static_cast<std::string::size_type>(length)); |
| 169 | _chunkBuffer.append("\r\n", 2); |
| 170 | |
| 171 | std::streamsize chunkSize = static_cast<std::streamsize>(_chunkBuffer.size()); |
| 172 | std::streamsize offset = 0; |
| 173 | while (offset < chunkSize) |
| 174 | { |
| 175 | int written = _session.write(_chunkBuffer.data() + offset, chunkSize - offset); |
| 176 | if (written <= 0) |
| 177 | return -1; |
| 178 | offset += written; |
| 179 | } |
| 180 | return static_cast<int>(length); |
| 181 | } |
| 182 | |
| 183 | |
| 184 | // |