master
h 81 lines 3.81 KB
Raw
1 /*++
2
3 Copyright (c) Microsoft. All rights reserved.
4
5 Module Name:
6
7 ContainerSettings.h
8
9 Abstract:
10
11 This file contains the definition of the WinRT wrapper for the WSLC SDK ContainerSettings class.
12
13 --*/
14
15 #pragma once
16 #include "Microsoft.WSL.Containers.ContainerSettings.g.h"
17 #include "ProcessSettings.h"
18 #include "Helpers.h"
19
20 namespace winrt::Microsoft::WSL::Containers::implementation {
21 struct ContainerSettings : ContainerSettingsT<ContainerSettings>
22 {
23 ContainerSettings() = default;
24
25 ContainerSettings(hstring const& imageName);
26 hstring ImageName();
27 void ImageName(hstring const& value);
28 hstring Name();
29 void Name(hstring const& value);
30 winrt::Microsoft::WSL::Containers::ProcessSettings InitProcess();
31 void InitProcess(winrt::Microsoft::WSL::Containers::ProcessSettings const& value);
32 winrt::Windows::Foundation::IReference<winrt::Microsoft::WSL::Containers::ContainerNetworkingMode> NetworkingMode();
33 void NetworkingMode(winrt::Windows::Foundation::IReference<winrt::Microsoft::WSL::Containers::ContainerNetworkingMode> const& value);
34 hstring HostName();
35 void HostName(hstring const& value);
36 hstring DomainName();
37 void DomainName(hstring const& value);
38 bool EnableAutoRemove();
39 void EnableAutoRemove(bool value);
40 bool EnableGpu();
41 void EnableGpu(bool value);
42 bool Privileged();
43 void Privileged(bool value);
44 winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerPortMapping> PortMappings();
45 void PortMappings(winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerPortMapping> const& value);
46 winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerVolume> Volumes();
47 void Volumes(winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerVolume> const& value);
48 winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerNamedVolume> NamedVolumes();
49 void NamedVolumes(winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerNamedVolume> const& value);
50
51 WslcContainerSettings* ToStructPointer();
52
53 private:
54 std::string m_imageName;
55 std::string m_name;
56 winrt::Microsoft::WSL::Containers::ProcessSettings m_initProcess{nullptr};
57 winrt::Windows::Foundation::IReference<winrt::Microsoft::WSL::Containers::ContainerNetworkingMode> m_networkingMode{nullptr};
58 std::string m_hostName;
59 std::string m_domainName;
60 WslcContainerFlags m_containerFlags{WSLC_CONTAINER_FLAG_NONE};
61 winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerPortMapping> m_portMappings{
62 winrt::single_threaded_vector<winrt::Microsoft::WSL::Containers::ContainerPortMapping>()};
63 winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerVolume> m_volumes{
64 winrt::single_threaded_vector<winrt::Microsoft::WSL::Containers::ContainerVolume>()};
65 winrt::Windows::Foundation::Collections::IVector<winrt::Microsoft::WSL::Containers::ContainerNamedVolume> m_namedVolumes{
66 winrt::single_threaded_vector<winrt::Microsoft::WSL::Containers::ContainerNamedVolume>()};
67
68 std::unique_ptr<WslcContainerSettings> m_containerSettings;
69 std::vector<WslcContainerPortMapping> m_portMappingsStructs;
70 std::vector<WslcContainerVolume> m_volumesStructs;
71 std::vector<WslcContainerNamedVolume> m_namedVolumesStructs;
72 };
73 } // namespace winrt::Microsoft::WSL::Containers::implementation
74
75 namespace winrt::Microsoft::WSL::Containers::factory_implementation {
76 struct ContainerSettings : ContainerSettingsT<ContainerSettings, implementation::ContainerSettings>
77 {
78 };
79 } // namespace winrt::Microsoft::WSL::Containers::factory_implementation
80
81 DEFINE_TYPE_HELPERS(ContainerSettings);