| 221 | */ |
| 222 | |
| 223 | static size_t send_write(char * data, size_t size, size_t nmemb, void * p) { |
| 224 | try { |
| 225 | if (p == nullptr) { |
| 226 | return CALLBACK_ABORT; |
| 227 | } |
| 228 | HTTPUploadCallback *callback = reinterpret_cast<HTTPUploadCallback*>(p); |
| 229 | if (callback->stop) { |
| 230 | return CALLBACK_ABORT; |
| 231 | } |
| 232 | size_t buffer_size = callback->ptr->getBufferSize(); |
| 233 | if (callback->getPos() <= buffer_size) { |
| 234 | size_t len = buffer_size - callback->pos; |
| 235 | if (len <= 0) { |
| 236 | return 0; |
| 237 | } |
| 238 | char *ptr = callback->ptr->getBuffer(callback->getPos()); |
| 239 | |
| 240 | if (ptr == nullptr) { |
| 241 | return 0; |
| 242 | } |
| 243 | if (len > size * nmemb) |
| 244 | len = size * nmemb; |
| 245 | memcpy(data, ptr, len); |
| 246 | callback->pos += len; |
| 247 | callback->ptr->seek(callback->getPos()); |
| 248 | return len; |
| 249 | } |
| 250 | return 0; |
| 251 | } catch (...) { |
| 252 | return CALLBACK_ABORT; |
| 253 | } |
| 254 | } |
| 255 | |
| 256 | static int seek_callback(void *p, int64_t offset, int) { |
| 257 | try { |
nothing calls this directly
no test coverage detected