COMStaticStorage.cpp (1262B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 #include "pch.h" 4 #include "Public/winget/COMStaticStorage.h" 5 6 namespace AppInstaller::WinRT 7 { 8 COMStaticStorageStatics& COMStaticStorageStatics::Instance() 9 { 10 static COMStaticStorageStatics s_instance; 11 return s_instance; 12 } 13 14 void COMStaticStorageStatics::AddStaticStorageItem(const winrt::hstring& name, const winrt::Windows::Foundation::IInspectable& item) 15 { 16 COMStaticStorageStatics& instance = Instance(); 17 const winrt::slim_lock_guard lock{ instance.m_lock }; 18 winrt::Windows::ApplicationModel::Core::CoreApplication::Properties().Insert(name, item); 19 instance.m_items.emplace(std::wstring{ name }); 20 } 21 22 void COMStaticStorageStatics::ResetAll() try 23 { 24 COMStaticStorageStatics& instance = Instance(); 25 std::set<std::wstring> localItems; 26 27 { 28 const winrt::slim_lock_guard lock{ instance.m_lock }; 29 instance.m_items.swap(localItems); 30 } 31 32 for (const auto& item : localItems) 33 { 34 winrt::Windows::ApplicationModel::Core::CoreApplication::Properties().TryRemove(item); 35 } 36 } 37 CATCH_LOG(); 38 }