winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 }