12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #include "il2cpp-config.h"
- #include "MetadataLoader.h"
- #include "os/File.h"
- #include "os/Mutex.h"
- #include "utils/MemoryMappedFile.h"
- #include "utils/PathUtils.h"
- #include "utils/Runtime.h"
- #include "utils/Logging.h"
-
-
- void* il2cpp::vm::MetadataLoader::LoadMetadataFile(const char* fileName)
- {
- std::string resourcesDirectory = utils::PathUtils::Combine(utils::Runtime::GetDataDir(), utils::StringView<char>("Metadata"));
-
- std::string resourceFilePath = utils::PathUtils::Combine(resourcesDirectory, utils::StringView<char>(fileName, strlen(fileName)));
-
- int error = 0;
- os::FileHandle* handle = os::File::Open(resourceFilePath, kFileModeOpen, kFileAccessRead, kFileShareRead, kFileOptionsNone, &error);
- if (error != 0)
- {
- utils::Logging::Write("ERROR: Could not open %s", resourceFilePath.c_str());
- return NULL;
- }
-
- void* fileBuffer = utils::MemoryMappedFile::Map(handle);
-
- os::File::Close(handle, &error);
- if (error != 0)
- {
- utils::MemoryMappedFile::Unmap(fileBuffer);
- fileBuffer = NULL;
- return NULL;
- }
-
- return fileBuffer;
- }
-
- void il2cpp::vm::MetadataLoader::UnloadMetadataFile(void* fileBuffer)
- {
- bool success = il2cpp::utils::MemoryMappedFile::Unmap(fileBuffer);
- NO_UNUSED_WARNING(success);
- IL2CPP_ASSERT(success);
- }
|