1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/medialive/MediaLive_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/medialive/model/OutputGroupSettings.h>
10 #include <aws/core/utils/memory/stl/AWSVector.h>
11 #include <aws/medialive/model/Output.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Json
19 {
20   class JsonValue;
21   class JsonView;
22 } // namespace Json
23 } // namespace Utils
24 namespace MediaLive
25 {
26 namespace Model
27 {
28 
29   /**
30    * Output groups for this Live Event. Output groups contain information about where
31    * streams should be distributed.<p><h3>See Also:</h3>   <a
32    * href="http://docs.aws.amazon.com/goto/WebAPI/medialive-2017-10-14/OutputGroup">AWS
33    * API Reference</a></p>
34    */
35   class AWS_MEDIALIVE_API OutputGroup
36   {
37   public:
38     OutputGroup();
39     OutputGroup(Aws::Utils::Json::JsonView jsonValue);
40     OutputGroup& operator=(Aws::Utils::Json::JsonView jsonValue);
41     Aws::Utils::Json::JsonValue Jsonize() const;
42 
43 
44     /**
45      * Custom output group name optionally defined by the user.  Only letters, numbers,
46      * and the underscore character allowed; only 32 characters allowed.
47      */
GetName()48     inline const Aws::String& GetName() const{ return m_name; }
49 
50     /**
51      * Custom output group name optionally defined by the user.  Only letters, numbers,
52      * and the underscore character allowed; only 32 characters allowed.
53      */
NameHasBeenSet()54     inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
55 
56     /**
57      * Custom output group name optionally defined by the user.  Only letters, numbers,
58      * and the underscore character allowed; only 32 characters allowed.
59      */
SetName(const Aws::String & value)60     inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; }
61 
62     /**
63      * Custom output group name optionally defined by the user.  Only letters, numbers,
64      * and the underscore character allowed; only 32 characters allowed.
65      */
SetName(Aws::String && value)66     inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
67 
68     /**
69      * Custom output group name optionally defined by the user.  Only letters, numbers,
70      * and the underscore character allowed; only 32 characters allowed.
71      */
SetName(const char * value)72     inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); }
73 
74     /**
75      * Custom output group name optionally defined by the user.  Only letters, numbers,
76      * and the underscore character allowed; only 32 characters allowed.
77      */
WithName(const Aws::String & value)78     inline OutputGroup& WithName(const Aws::String& value) { SetName(value); return *this;}
79 
80     /**
81      * Custom output group name optionally defined by the user.  Only letters, numbers,
82      * and the underscore character allowed; only 32 characters allowed.
83      */
WithName(Aws::String && value)84     inline OutputGroup& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
85 
86     /**
87      * Custom output group name optionally defined by the user.  Only letters, numbers,
88      * and the underscore character allowed; only 32 characters allowed.
89      */
WithName(const char * value)90     inline OutputGroup& WithName(const char* value) { SetName(value); return *this;}
91 
92 
93     /**
94      * Settings associated with the output group.
95      */
GetOutputGroupSettings()96     inline const OutputGroupSettings& GetOutputGroupSettings() const{ return m_outputGroupSettings; }
97 
98     /**
99      * Settings associated with the output group.
100      */
OutputGroupSettingsHasBeenSet()101     inline bool OutputGroupSettingsHasBeenSet() const { return m_outputGroupSettingsHasBeenSet; }
102 
103     /**
104      * Settings associated with the output group.
105      */
SetOutputGroupSettings(const OutputGroupSettings & value)106     inline void SetOutputGroupSettings(const OutputGroupSettings& value) { m_outputGroupSettingsHasBeenSet = true; m_outputGroupSettings = value; }
107 
108     /**
109      * Settings associated with the output group.
110      */
SetOutputGroupSettings(OutputGroupSettings && value)111     inline void SetOutputGroupSettings(OutputGroupSettings&& value) { m_outputGroupSettingsHasBeenSet = true; m_outputGroupSettings = std::move(value); }
112 
113     /**
114      * Settings associated with the output group.
115      */
WithOutputGroupSettings(const OutputGroupSettings & value)116     inline OutputGroup& WithOutputGroupSettings(const OutputGroupSettings& value) { SetOutputGroupSettings(value); return *this;}
117 
118     /**
119      * Settings associated with the output group.
120      */
WithOutputGroupSettings(OutputGroupSettings && value)121     inline OutputGroup& WithOutputGroupSettings(OutputGroupSettings&& value) { SetOutputGroupSettings(std::move(value)); return *this;}
122 
123 
124 
GetOutputs()125     inline const Aws::Vector<Output>& GetOutputs() const{ return m_outputs; }
126 
127 
OutputsHasBeenSet()128     inline bool OutputsHasBeenSet() const { return m_outputsHasBeenSet; }
129 
130 
SetOutputs(const Aws::Vector<Output> & value)131     inline void SetOutputs(const Aws::Vector<Output>& value) { m_outputsHasBeenSet = true; m_outputs = value; }
132 
133 
SetOutputs(Aws::Vector<Output> && value)134     inline void SetOutputs(Aws::Vector<Output>&& value) { m_outputsHasBeenSet = true; m_outputs = std::move(value); }
135 
136 
WithOutputs(const Aws::Vector<Output> & value)137     inline OutputGroup& WithOutputs(const Aws::Vector<Output>& value) { SetOutputs(value); return *this;}
138 
139 
WithOutputs(Aws::Vector<Output> && value)140     inline OutputGroup& WithOutputs(Aws::Vector<Output>&& value) { SetOutputs(std::move(value)); return *this;}
141 
142 
AddOutputs(const Output & value)143     inline OutputGroup& AddOutputs(const Output& value) { m_outputsHasBeenSet = true; m_outputs.push_back(value); return *this; }
144 
145 
AddOutputs(Output && value)146     inline OutputGroup& AddOutputs(Output&& value) { m_outputsHasBeenSet = true; m_outputs.push_back(std::move(value)); return *this; }
147 
148   private:
149 
150     Aws::String m_name;
151     bool m_nameHasBeenSet;
152 
153     OutputGroupSettings m_outputGroupSettings;
154     bool m_outputGroupSettingsHasBeenSet;
155 
156     Aws::Vector<Output> m_outputs;
157     bool m_outputsHasBeenSet;
158   };
159 
160 } // namespace Model
161 } // namespace MediaLive
162 } // namespace Aws
163