winget-cli

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

ConfigurationUnit.cpp (6308B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 #include "pch.h"
      4 #include "ConfigurationUnit.h"
      5 #include "ConfigurationUnit.g.cpp"
      6 #include "ConfigurationSetParser.h"
      7 #include "ConfigurationStatus.h"
      8 
      9 namespace winrt::Microsoft::Management::Configuration::implementation
     10 {
     11     namespace
     12     {
     13         using ValueSet = Windows::Foundation::Collections::ValueSet;
     14 
     15         ValueSet Clone(const ValueSet& source)
     16         {
     17             ValueSet result;
     18 
     19             for (const auto& entry : source)
     20             {
     21                 ValueSet child = entry.Value().try_as<ValueSet>();
     22 
     23                 if (child)
     24                 {
     25                     result.Insert(entry.Key(), Clone(child));
     26                 }
     27                 else
     28                 {
     29                     result.Insert(entry.Key(), entry.Value());
     30                 }
     31             }
     32 
     33             return result;
     34         }
     35 
     36         Windows::Foundation::Collections::IVector<hstring> Clone(const Windows::Foundation::Collections::IVector<hstring>& value)
     37         {
     38             std::vector<hstring> temp{ value.Size() };
     39             value.GetMany(0, temp);
     40             return winrt::multi_threaded_vector<hstring>(std::move(temp));
     41         }
     42     }
     43 
     44     ConfigurationUnit::ConfigurationUnit()
     45     {
     46         GUID instanceIdentifier;
     47         THROW_IF_FAILED(CoCreateGuid(&instanceIdentifier));
     48         m_instanceIdentifier = instanceIdentifier;
     49     }
     50 
     51     ConfigurationUnit::ConfigurationUnit(const guid& instanceIdentifier) :
     52         m_instanceIdentifier(instanceIdentifier)
     53     {
     54     }
     55 
     56     hstring ConfigurationUnit::Type()
     57     {
     58         return m_type;
     59     }
     60 
     61     void ConfigurationUnit::Type(const hstring& value)
     62     {
     63         m_type = value;
     64     }
     65 
     66     guid ConfigurationUnit::InstanceIdentifier()
     67     {
     68         return m_instanceIdentifier;
     69     }
     70 
     71     hstring ConfigurationUnit::Identifier()
     72     {
     73         return m_identifier;
     74     }
     75 
     76     void ConfigurationUnit::Identifier(const hstring& value)
     77     {
     78         m_identifier = value;
     79     }
     80 
     81     ConfigurationUnitIntent ConfigurationUnit::Intent()
     82     {
     83         return m_intent;
     84     }
     85 
     86     void ConfigurationUnit::Intent(ConfigurationUnitIntent value)
     87     {
     88         m_intent = value;
     89     }
     90 
     91     Windows::Foundation::Collections::IVector<hstring> ConfigurationUnit::Dependencies()
     92     {
     93         return m_dependencies;
     94     }
     95 
     96     void ConfigurationUnit::Dependencies(const Windows::Foundation::Collections::IVector<hstring>& value)
     97     {
     98         THROW_HR_IF(E_POINTER, !value);
     99         m_dependencies = value;
    100     }
    101 
    102     void ConfigurationUnit::Dependencies(std::vector<hstring>&& value)
    103     {
    104         m_dependencies = winrt::multi_threaded_vector<hstring>(std::move(value));
    105     }
    106 
    107     Windows::Foundation::Collections::ValueSet ConfigurationUnit::Metadata()
    108     {
    109         return m_metadata;
    110     }
    111 
    112     void ConfigurationUnit::Metadata(const Windows::Foundation::Collections::ValueSet& value)
    113     {
    114         THROW_HR_IF(E_POINTER, !value);
    115         m_metadata = value;
    116     }
    117 
    118     Windows::Foundation::Collections::ValueSet ConfigurationUnit::Settings()
    119     {
    120         return m_settings;
    121     }
    122 
    123     void ConfigurationUnit::Settings(const Windows::Foundation::Collections::ValueSet& value)
    124     {
    125         THROW_HR_IF(E_POINTER, !value);
    126         m_settings = value;
    127     }
    128 
    129     IConfigurationUnitProcessorDetails ConfigurationUnit::Details()
    130     {
    131         return m_details;
    132     }
    133 
    134     void ConfigurationUnit::Details(IConfigurationUnitProcessorDetails details)
    135     {
    136         m_details = std::move(details);
    137     }
    138 
    139     ConfigurationUnitState ConfigurationUnit::State()
    140     {
    141         auto status = ConfigurationStatus::Instance();
    142         return status->GetUnitState(m_instanceIdentifier);
    143     }
    144 
    145     IConfigurationUnitResultInformation ConfigurationUnit::ResultInformation()
    146     {
    147         auto status = ConfigurationStatus::Instance();
    148         return status->GetUnitResultInformation(m_instanceIdentifier);
    149     }
    150 
    151     bool ConfigurationUnit::IsActive()
    152     {
    153         return m_isActive;
    154     }
    155 
    156     void ConfigurationUnit::IsActive(bool value)
    157     {
    158         m_isActive = value;
    159     }
    160 
    161     Configuration::ConfigurationUnit ConfigurationUnit::Copy()
    162     {
    163         auto result = make_self<ConfigurationUnit>();
    164 
    165         result->m_type = m_type;
    166         result->m_intent = m_intent;
    167         result->m_dependencies = Clone(m_dependencies);
    168         result->m_metadata = Clone(m_metadata);
    169         result->m_settings = Clone(m_settings);
    170         result->m_details = m_details;
    171         result->m_environment = make_self<implementation::ConfigurationEnvironment>(*m_environment);
    172 
    173         return *result;
    174     }
    175 
    176     bool ConfigurationUnit::IsGroup()
    177     {
    178         return m_isGroup;
    179     }
    180 
    181     void ConfigurationUnit::IsGroup(bool value)
    182     {
    183         m_isGroup = value;
    184 
    185         if (value)
    186         {
    187             if (!m_units)
    188             {
    189                 m_units = winrt::multi_threaded_vector<Configuration::ConfigurationUnit>();
    190             }
    191         }
    192     }
    193 
    194     Windows::Foundation::Collections::IVector<Configuration::ConfigurationUnit> ConfigurationUnit::Units()
    195     {
    196         return m_units;
    197     }
    198 
    199     void ConfigurationUnit::Units(const Windows::Foundation::Collections::IVector<Configuration::ConfigurationUnit>& value)
    200     {
    201         if (m_isGroup)
    202         {
    203             THROW_HR_IF(E_POINTER, !value);
    204         }
    205         else if (value)
    206         {
    207             m_isGroup = true;
    208         }
    209 
    210         m_units = value;
    211     }
    212 
    213     void ConfigurationUnit::Units(std::vector<Configuration::ConfigurationUnit>&& value)
    214     {
    215         m_units = winrt::multi_threaded_vector<Configuration::ConfigurationUnit>(std::move(value));
    216     }
    217 
    218     Configuration::ConfigurationEnvironment ConfigurationUnit::Environment()
    219     {
    220         return *m_environment;
    221     }
    222 
    223     implementation::ConfigurationEnvironment& ConfigurationUnit::EnvironmentInternal()
    224     {
    225         return *m_environment;
    226     }
    227 
    228     HRESULT STDMETHODCALLTYPE ConfigurationUnit::SetLifetimeWatcher(IUnknown* watcher)
    229     {
    230         return AppInstaller::WinRT::LifetimeWatcherBase::SetLifetimeWatcher(watcher);
    231     }
    232 }