MCPcopy Create free account
hub / github.com/OSGeo/PROJ / open_cbk

Function open_cbk

test/unit/test_network.cpp:265–314  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

263};
264
265static PROJ_NETWORK_HANDLE *open_cbk(PJ_CONTEXT *ctx, const char *url,
266 unsigned long long offset,
267 size_t size_to_read, void *buffer,
268 size_t *out_size_read,
269 size_t error_string_max_size,
270 char *out_error_string, void *user_data) {
271 auto exchange = static_cast<ExchangeWithCallback *>(user_data);
272 if (exchange->error)
273 return nullptr;
274 if (exchange->nextEvent >= exchange->events.size()) {
275 fprintf(stderr, "unexpected call to open(%s, %ld, %ld)\n", url,
276 (long)offset, (long)size_to_read);
277 exchange->error = true;
278 return nullptr;
279 }
280 auto openEvent =
281 dynamic_cast<OpenEvent *>(exchange->events[exchange->nextEvent].get());
282 if (!openEvent) {
283 fprintf(stderr,
284 "unexpected call to open(%s, %ld, %ld). "
285 "Was expecting a %s event\n",
286 url, (long)offset, (long)size_to_read,
287 exchange->events[exchange->nextEvent]->type.c_str());
288 exchange->error = true;
289 return nullptr;
290 }
291 exchange->nextEvent++;
292 if (openEvent->ctx != ctx || openEvent->url != url ||
293 openEvent->offset != offset ||
294 openEvent->size_to_read != size_to_read) {
295 fprintf(stderr,
296 "wrong call to open(%s, %ld, %ld). Was expecting "
297 "open(%s, %ld, %ld)\n",
298 url, (long)offset, (long)size_to_read, openEvent->url.c_str(),
299 (long)openEvent->offset, (long)openEvent->size_to_read);
300 exchange->error = true;
301 return nullptr;
302 }
303 if (!openEvent->errorMsg.empty()) {
304 snprintf(out_error_string, error_string_max_size, "%s",
305 openEvent->errorMsg.c_str());
306 return nullptr;
307 }
308
309 memcpy(buffer, openEvent->response.data(), openEvent->response.size());
310 *out_size_read = openEvent->response.size();
311 auto handle = reinterpret_cast<PROJ_NETWORK_HANDLE *>(new File());
312 exchange->mapIdToHandle[openEvent->file_id] = handle;
313 return handle;
314}
315
316static void close_cbk(PJ_CONTEXT *ctx, PROJ_NETWORK_HANDLE *handle,
317 void *user_data) {

Callers

nothing calls this directly

Calls 3

sizeMethod · 0.80
getMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected