MCPcopy Create free account
hub / github.com/crownengine/crown / read_request

Method read_request

src/device/save_game.cpp:374–404  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

372 }
373
374 s32 read_request(SaveGame::Request &rr)
375 {
376 _allocator->deallocate(rr.data);
377 rr.data = NULL;
378 rr.size = 0;
379
380 const Stat st = _filesystem.stat(rr.basename);
381 if (st.file_type == Stat::NO_ENTRY)
382 return SaveError::MISSING;
383 if (st.file_type != Stat::REGULAR)
384 return SaveError::IO_ERROR;
385
386 File *file = _filesystem.open(rr.basename, FileOpenMode::READ);
387 CE_ENSURE(file != NULL);
388 if (!file->is_open()) {
389 _filesystem.close(*file);
390 return SaveError::IO_ERROR;
391 }
392
393 const u32 size = file->size();
394 rr.data = _allocator->allocate(size + 1);
395 rr.size = size;
396
397 const s32 io_result = do_chunked_io(*file, rr.data, size, IO_READ, rr);
398 _filesystem.close(*file);
399 if (io_result != SaveError::SUCCESS)
400 return io_result;
401 ((char *)rr.data)[rr.size] = '\0';
402
403 return SaveError::SUCCESS;
404 }
405
406 s32 write_request(SaveGame::Request &rr)
407 {

Callers

nothing calls this directly

Calls 7

deallocateMethod · 0.45
statMethod · 0.45
openMethod · 0.45
is_openMethod · 0.45
closeMethod · 0.45
sizeMethod · 0.45
allocateMethod · 0.45

Tested by

no test coverage detected