void AssetLibrary::Shutdown() { for (size_t iAsset = 0; iAsset < m_loadedAssets.count; ++iAsset) { auto pAsset = m_loadedAssets.buffer[iAsset]->value; assert(pAsset != nullptr); { auto pAllocator = this->FindAllocatorByType(pAsset->GetType()); assert(pAllocator != nullptr); { pAllocator->DeleteAsset(pAsset); } } } m_loadedAssets.Clear(); m_allocators.Clear(); #if defined(GT_BUILD_DEFAULT_ASSETS) delete m_pDefaultAssetAllocator; m_pDefaultAssetAllocator = nullptr; #endif dr_delete_mutex(m_mutex); m_mutex = nullptr; m_pVFS = nullptr; }
void AssetLibrary::Unload(Asset* pAsset) { if (pAsset != nullptr) { dr_lock_mutex(m_mutex); { if (pAsset->DecrementReferenceCount() == 0) { for (size_t iAsset = 0; iAsset < m_loadedAssets.count; ++iAsset) { if (m_loadedAssets.buffer[iAsset]->value == pAsset) { // Remove from the cache. m_loadedAssets.RemoveByIndex(iAsset); // Delete the asset object. auto pAllocator = this->FindAllocatorByType(pAsset->GetType()); assert(pAllocator != nullptr); { pAllocator->DeleteAsset(pAsset); } break; } } } } dr_unlock_mutex(m_mutex); } }
void SoaWg::DeleteEndpointSlot() { DeleteAsset(db.Tb("Endpoint")); }
void SoaWg::DeleteDeployedServiceSlot() { DeleteAsset(db.Tb("DeployedService")); }
void SoaWg::DeleteServiceVersionSlot() { DeleteAsset(db.Tb("ServiceVersion")); }
void SoaWg::DeleteServiceSlot() { DeleteAsset(db.Tb("Service")); }
void SoaWg::DeleteDeployedApplicationSlot() { DeleteAsset(db.Tb("DeployedApplication")); }
void SoaWg::DeleteApplicationVersionSlot() { DeleteAsset(db.Tb("ApplicationVersion")); }