aws_sdk_gameliftstreams/operation/start_stream_session/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::start_stream_session::_start_stream_session_output::StartStreamSessionOutputBuilder;
3
4pub use crate::operation::start_stream_session::_start_stream_session_input::StartStreamSessionInputBuilder;
5
6impl crate::operation::start_stream_session::builders::StartStreamSessionInputBuilder {
7 /// Sends a request with this input using the given client.
8 pub async fn send_with(
9 self,
10 client: &crate::Client,
11 ) -> ::std::result::Result<
12 crate::operation::start_stream_session::StartStreamSessionOutput,
13 ::aws_smithy_runtime_api::client::result::SdkError<
14 crate::operation::start_stream_session::StartStreamSessionError,
15 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16 >,
17 > {
18 let mut fluent_builder = client.start_stream_session();
19 fluent_builder.inner = self;
20 fluent_builder.send().await
21 }
22}
23/// Fluent builder constructing a request to `StartStreamSession`.
24///
25/// <p>This action initiates a new stream session and outputs connection information that clients can use to access the stream. A stream session refers to an instance of a stream that Amazon GameLift Streams transmits from the server to the end-user. A stream session runs on a compute resource that a stream group has allocated. The start stream session process works as follows:</p>
26/// <ol>
27/// <li>
28/// <p>Prerequisites:</p>
29/// <ul>
30/// <li>
31/// <p>You must have a stream group in <code>ACTIVE</code> status</p></li>
32/// <li>
33/// <p>You must have idle or on-demand capacity in a stream group in the location you want to stream from</p></li>
34/// <li>
35/// <p>You must have at least one application associated to the stream group (use <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_AssociateApplications.html">AssociateApplications</a> if needed)</p></li>
36/// </ul></li>
37/// <li>
38/// <p>Start stream request:</p>
39/// <ul>
40/// <li>
41/// <p>Your backend server calls <b>StartStreamSession</b> to initiate connection</p></li>
42/// <li>
43/// <p>Amazon GameLift Streams creates the stream session resource, assigns an Amazon Resource Name (ARN) value, and begins searching for available stream capacity to run the stream</p></li>
44/// <li>
45/// <p>Session transitions to <code>ACTIVATING</code> status</p></li>
46/// </ul></li>
47/// <li>
48/// <p>Placement completion:</p>
49/// <ul>
50/// <li>
51/// <p>If Amazon GameLift Streams is successful in finding capacity for the stream, the stream session status changes to <code>ACTIVE</code> status and <b>StartStreamSession</b> returns stream connection information</p></li>
52/// <li>
53/// <p>If Amazon GameLift Streams was not successful in finding capacity within the placement timeout period (defined according to the capacity type and platform type), the stream session status changes to <code>ERROR</code> status and <b>StartStreamSession</b> returns a <code>StatusReason</code> of <code>placementTimeout</code></p></li>
54/// </ul></li>
55/// <li>
56/// <p>Connection completion:</p>
57/// <ul>
58/// <li>
59/// <p>Provide the new connection information to the requesting client</p></li>
60/// <li>
61/// <p>Client must establish connection within <code>ConnectionTimeoutSeconds</code> (specified in <b>StartStreamSession</b> parameters)</p></li>
62/// <li>
63/// <p>Session terminates automatically if client fails to connect in time</p></li>
64/// </ul></li>
65/// </ol>
66/// <p>For more information about the stream session lifecycle, see <a href="https://docs.aws.amazon.com/gameliftstreams/latest/developerguide/stream-sessions.html">Stream sessions</a> in the <i>Amazon GameLift Streams Developer Guide</i>.</p>
67/// <p>Timeouts to be aware of that affect a stream session:</p>
68/// <ul>
69/// <li>
70/// <p><b>Placement timeout</b>: The amount of time that Amazon GameLift Streams has to find capacity for a stream request. Placement timeout varies based on the capacity type used to fulfill your stream request:</p>
71/// <ul>
72/// <li>
73/// <p><b>Always-on capacity</b>: 75 seconds</p></li>
74/// <li>
75/// <p><b>On-demand capacity</b>:</p>
76/// <ul>
77/// <li>
78/// <p>Linux/Proton runtimes: 90 seconds</p></li>
79/// <li>
80/// <p>Windows runtime: 10 minutes</p></li>
81/// </ul></li>
82/// </ul></li>
83/// <li>
84/// <p><b>Connection timeout</b>: The amount of time that Amazon GameLift Streams waits for a client to connect to a stream session in <code>ACTIVE</code> status, or reconnect to a stream session in <code>PENDING_CLIENT_RECONNECTION</code> status, the latter of which occurs when a client disconnects or loses connection from a stream session. If no client connects before the timeout, Amazon GameLift Streams terminates the stream session. This value is specified by <code>ConnectionTimeoutSeconds</code> in the <code>StartStreamSession</code> parameters.</p></li>
85/// <li>
86/// <p><b>Idle timeout</b>: A stream session will be terminated if no user input has been received for 60 minutes.</p></li>
87/// <li>
88/// <p><b>Maximum session length</b>: A stream session will be terminated after this amount of time has elapsed since it started, regardless of any existing client connections. This value is specified by <code>SessionLengthSeconds</code> in the <code>StartStreamSession</code> parameters.</p></li>
89/// </ul>
90/// <p>To start a new stream session, specify a stream group ID and application ID, along with the transport protocol and signal request to use with the stream session.</p>
91/// <p>For stream groups that have multiple locations, provide a set of locations ordered by priority using a <code>Locations</code> parameter. Amazon GameLift Streams will start a single stream session in the next available location. An application must be finished replicating to a remote location before the remote location can host a stream.</p>
92/// <p>To reconnect to a stream session after a client disconnects or loses connection, use <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_CreateStreamSessionConnection.html">CreateStreamSessionConnection</a>.</p>
93#[derive(::std::clone::Clone, ::std::fmt::Debug)]
94pub struct StartStreamSessionFluentBuilder {
95 handle: ::std::sync::Arc<crate::client::Handle>,
96 inner: crate::operation::start_stream_session::builders::StartStreamSessionInputBuilder,
97 config_override: ::std::option::Option<crate::config::Builder>,
98}
99impl
100 crate::client::customize::internal::CustomizableSend<
101 crate::operation::start_stream_session::StartStreamSessionOutput,
102 crate::operation::start_stream_session::StartStreamSessionError,
103 > for StartStreamSessionFluentBuilder
104{
105 fn send(
106 self,
107 config_override: crate::config::Builder,
108 ) -> crate::client::customize::internal::BoxFuture<
109 crate::client::customize::internal::SendResult<
110 crate::operation::start_stream_session::StartStreamSessionOutput,
111 crate::operation::start_stream_session::StartStreamSessionError,
112 >,
113 > {
114 ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
115 }
116}
117impl StartStreamSessionFluentBuilder {
118 /// Creates a new `StartStreamSessionFluentBuilder`.
119 pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
120 Self {
121 handle,
122 inner: ::std::default::Default::default(),
123 config_override: ::std::option::Option::None,
124 }
125 }
126 /// Access the StartStreamSession as a reference.
127 pub fn as_input(&self) -> &crate::operation::start_stream_session::builders::StartStreamSessionInputBuilder {
128 &self.inner
129 }
130 /// Sends the request and returns the response.
131 ///
132 /// If an error occurs, an `SdkError` will be returned with additional details that
133 /// can be matched against.
134 ///
135 /// By default, any retryable failures will be retried twice. Retry behavior
136 /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
137 /// set when configuring the client.
138 pub async fn send(
139 self,
140 ) -> ::std::result::Result<
141 crate::operation::start_stream_session::StartStreamSessionOutput,
142 ::aws_smithy_runtime_api::client::result::SdkError<
143 crate::operation::start_stream_session::StartStreamSessionError,
144 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
145 >,
146 > {
147 let input = self
148 .inner
149 .build()
150 .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
151 let runtime_plugins = crate::operation::start_stream_session::StartStreamSession::operation_runtime_plugins(
152 self.handle.runtime_plugins.clone(),
153 &self.handle.conf,
154 self.config_override,
155 );
156 crate::operation::start_stream_session::StartStreamSession::orchestrate(&runtime_plugins, input).await
157 }
158
159 /// Consumes this builder, creating a customizable operation that can be modified before being sent.
160 pub fn customize(
161 self,
162 ) -> crate::client::customize::CustomizableOperation<
163 crate::operation::start_stream_session::StartStreamSessionOutput,
164 crate::operation::start_stream_session::StartStreamSessionError,
165 Self,
166 > {
167 crate::client::customize::CustomizableOperation::new(self)
168 }
169 pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
170 self.set_config_override(::std::option::Option::Some(config_override.into()));
171 self
172 }
173
174 pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
175 self.config_override = config_override;
176 self
177 }
178 /// <p>A unique identifier that represents a client request. The request is idempotent, which ensures that an API request completes only once. When users send a request, Amazon GameLift Streams automatically populates this field.</p>
179 pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
180 self.inner = self.inner.client_token(input.into());
181 self
182 }
183 /// <p>A unique identifier that represents a client request. The request is idempotent, which ensures that an API request completes only once. When users send a request, Amazon GameLift Streams automatically populates this field.</p>
184 pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
185 self.inner = self.inner.set_client_token(input);
186 self
187 }
188 /// <p>A unique identifier that represents a client request. The request is idempotent, which ensures that an API request completes only once. When users send a request, Amazon GameLift Streams automatically populates this field.</p>
189 pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
190 self.inner.get_client_token()
191 }
192 /// <p>A human-readable label for the stream session. You can update this value later.</p>
193 pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
194 self.inner = self.inner.description(input.into());
195 self
196 }
197 /// <p>A human-readable label for the stream session. You can update this value later.</p>
198 pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
199 self.inner = self.inner.set_description(input);
200 self
201 }
202 /// <p>A human-readable label for the stream session. You can update this value later.</p>
203 pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
204 self.inner.get_description()
205 }
206 /// <p>The stream group to run this stream session with.</p>
207 /// <p>This value is an <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> or ID that uniquely identifies the stream group resource. Example ARN: <code>arn:aws:gameliftstreams:us-west-2:111122223333:streamgroup/sg-1AB2C3De4</code>. Example ID: <code>sg-1AB2C3De4</code>.</p>
208 pub fn identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
209 self.inner = self.inner.identifier(input.into());
210 self
211 }
212 /// <p>The stream group to run this stream session with.</p>
213 /// <p>This value is an <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> or ID that uniquely identifies the stream group resource. Example ARN: <code>arn:aws:gameliftstreams:us-west-2:111122223333:streamgroup/sg-1AB2C3De4</code>. Example ID: <code>sg-1AB2C3De4</code>.</p>
214 pub fn set_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
215 self.inner = self.inner.set_identifier(input);
216 self
217 }
218 /// <p>The stream group to run this stream session with.</p>
219 /// <p>This value is an <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> or ID that uniquely identifies the stream group resource. Example ARN: <code>arn:aws:gameliftstreams:us-west-2:111122223333:streamgroup/sg-1AB2C3De4</code>. Example ID: <code>sg-1AB2C3De4</code>.</p>
220 pub fn get_identifier(&self) -> &::std::option::Option<::std::string::String> {
221 self.inner.get_identifier()
222 }
223 /// <p>The data transport protocol to use for the stream session.</p>
224 pub fn protocol(mut self, input: crate::types::Protocol) -> Self {
225 self.inner = self.inner.protocol(input);
226 self
227 }
228 /// <p>The data transport protocol to use for the stream session.</p>
229 pub fn set_protocol(mut self, input: ::std::option::Option<crate::types::Protocol>) -> Self {
230 self.inner = self.inner.set_protocol(input);
231 self
232 }
233 /// <p>The data transport protocol to use for the stream session.</p>
234 pub fn get_protocol(&self) -> &::std::option::Option<crate::types::Protocol> {
235 self.inner.get_protocol()
236 }
237 /// <p>A WebRTC ICE offer string to use when initializing a WebRTC connection. Typically, the offer is a very long JSON string. Provide the string as a text value in quotes.</p>
238 /// <p>Amazon GameLift Streams also supports setting the field to "NO_CLIENT_CONNECTION". This will create a session without needing any browser request or Web SDK integration. The session starts up as usual and waits for a reconnection from a browser, which is accomplished using <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_CreateStreamSessionConnection.html">CreateStreamSessionConnection</a>.</p>
239 pub fn signal_request(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
240 self.inner = self.inner.signal_request(input.into());
241 self
242 }
243 /// <p>A WebRTC ICE offer string to use when initializing a WebRTC connection. Typically, the offer is a very long JSON string. Provide the string as a text value in quotes.</p>
244 /// <p>Amazon GameLift Streams also supports setting the field to "NO_CLIENT_CONNECTION". This will create a session without needing any browser request or Web SDK integration. The session starts up as usual and waits for a reconnection from a browser, which is accomplished using <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_CreateStreamSessionConnection.html">CreateStreamSessionConnection</a>.</p>
245 pub fn set_signal_request(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
246 self.inner = self.inner.set_signal_request(input);
247 self
248 }
249 /// <p>A WebRTC ICE offer string to use when initializing a WebRTC connection. Typically, the offer is a very long JSON string. Provide the string as a text value in quotes.</p>
250 /// <p>Amazon GameLift Streams also supports setting the field to "NO_CLIENT_CONNECTION". This will create a session without needing any browser request or Web SDK integration. The session starts up as usual and waits for a reconnection from a browser, which is accomplished using <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_CreateStreamSessionConnection.html">CreateStreamSessionConnection</a>.</p>
251 pub fn get_signal_request(&self) -> &::std::option::Option<::std::string::String> {
252 self.inner.get_signal_request()
253 }
254 /// <p>An <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> or ID that uniquely identifies the application resource. Example ARN: <code>arn:aws:gameliftstreams:us-west-2:111122223333:application/a-9ZY8X7Wv6</code>. Example ID: <code>a-9ZY8X7Wv6</code>.</p>
255 pub fn application_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
256 self.inner = self.inner.application_identifier(input.into());
257 self
258 }
259 /// <p>An <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> or ID that uniquely identifies the application resource. Example ARN: <code>arn:aws:gameliftstreams:us-west-2:111122223333:application/a-9ZY8X7Wv6</code>. Example ID: <code>a-9ZY8X7Wv6</code>.</p>
260 pub fn set_application_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
261 self.inner = self.inner.set_application_identifier(input);
262 self
263 }
264 /// <p>An <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> or ID that uniquely identifies the application resource. Example ARN: <code>arn:aws:gameliftstreams:us-west-2:111122223333:application/a-9ZY8X7Wv6</code>. Example ID: <code>a-9ZY8X7Wv6</code>.</p>
265 pub fn get_application_identifier(&self) -> &::std::option::Option<::std::string::String> {
266 self.inner.get_application_identifier()
267 }
268 /// <p>An opaque, unique identifier for an end-user, defined by the developer.</p>
269 pub fn user_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
270 self.inner = self.inner.user_id(input.into());
271 self
272 }
273 /// <p>An opaque, unique identifier for an end-user, defined by the developer.</p>
274 pub fn set_user_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
275 self.inner = self.inner.set_user_id(input);
276 self
277 }
278 /// <p>An opaque, unique identifier for an end-user, defined by the developer.</p>
279 pub fn get_user_id(&self) -> &::std::option::Option<::std::string::String> {
280 self.inner.get_user_id()
281 }
282 ///
283 /// Appends an item to `Locations`.
284 ///
285 /// To override the contents of this collection use [`set_locations`](Self::set_locations).
286 ///
287 /// <p>A list of locations, in order of priority, where you want Amazon GameLift Streams to start a stream from. For example, <code>us-east-1</code>. Amazon GameLift Streams selects the location with the next available capacity to start a single stream session in. If this value is empty, Amazon GameLift Streams attempts to start a stream session in the primary location.</p>
288 /// <p>For a complete list of locations that Amazon GameLift Streams supports, refer to <a href="https://docs.aws.amazon.com/gameliftstreams/latest/developerguide/regions-quotas.html">Regions, quotas, and limitations</a> in the <i>Amazon GameLift Streams Developer Guide</i>.</p>
289 pub fn locations(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
290 self.inner = self.inner.locations(input.into());
291 self
292 }
293 /// <p>A list of locations, in order of priority, where you want Amazon GameLift Streams to start a stream from. For example, <code>us-east-1</code>. Amazon GameLift Streams selects the location with the next available capacity to start a single stream session in. If this value is empty, Amazon GameLift Streams attempts to start a stream session in the primary location.</p>
294 /// <p>For a complete list of locations that Amazon GameLift Streams supports, refer to <a href="https://docs.aws.amazon.com/gameliftstreams/latest/developerguide/regions-quotas.html">Regions, quotas, and limitations</a> in the <i>Amazon GameLift Streams Developer Guide</i>.</p>
295 pub fn set_locations(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
296 self.inner = self.inner.set_locations(input);
297 self
298 }
299 /// <p>A list of locations, in order of priority, where you want Amazon GameLift Streams to start a stream from. For example, <code>us-east-1</code>. Amazon GameLift Streams selects the location with the next available capacity to start a single stream session in. If this value is empty, Amazon GameLift Streams attempts to start a stream session in the primary location.</p>
300 /// <p>For a complete list of locations that Amazon GameLift Streams supports, refer to <a href="https://docs.aws.amazon.com/gameliftstreams/latest/developerguide/regions-quotas.html">Regions, quotas, and limitations</a> in the <i>Amazon GameLift Streams Developer Guide</i>.</p>
301 pub fn get_locations(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
302 self.inner.get_locations()
303 }
304 /// <p>Length of time (in seconds) that Amazon GameLift Streams should wait for a client to connect or reconnect to the stream session. Applies to both connection and reconnection scenarios. This time span starts when the stream session reaches <code>ACTIVE</code> state. If no client connects before the timeout, Amazon GameLift Streams terminates the stream session. Default value is 120.</p>
305 pub fn connection_timeout_seconds(mut self, input: i32) -> Self {
306 self.inner = self.inner.connection_timeout_seconds(input);
307 self
308 }
309 /// <p>Length of time (in seconds) that Amazon GameLift Streams should wait for a client to connect or reconnect to the stream session. Applies to both connection and reconnection scenarios. This time span starts when the stream session reaches <code>ACTIVE</code> state. If no client connects before the timeout, Amazon GameLift Streams terminates the stream session. Default value is 120.</p>
310 pub fn set_connection_timeout_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
311 self.inner = self.inner.set_connection_timeout_seconds(input);
312 self
313 }
314 /// <p>Length of time (in seconds) that Amazon GameLift Streams should wait for a client to connect or reconnect to the stream session. Applies to both connection and reconnection scenarios. This time span starts when the stream session reaches <code>ACTIVE</code> state. If no client connects before the timeout, Amazon GameLift Streams terminates the stream session. Default value is 120.</p>
315 pub fn get_connection_timeout_seconds(&self) -> &::std::option::Option<i32> {
316 self.inner.get_connection_timeout_seconds()
317 }
318 /// <p>The maximum duration of a session. Amazon GameLift Streams will automatically terminate a session after this amount of time has elapsed, regardless of any existing client connections. Default value is 43200 (12 hours).</p>
319 pub fn session_length_seconds(mut self, input: i32) -> Self {
320 self.inner = self.inner.session_length_seconds(input);
321 self
322 }
323 /// <p>The maximum duration of a session. Amazon GameLift Streams will automatically terminate a session after this amount of time has elapsed, regardless of any existing client connections. Default value is 43200 (12 hours).</p>
324 pub fn set_session_length_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
325 self.inner = self.inner.set_session_length_seconds(input);
326 self
327 }
328 /// <p>The maximum duration of a session. Amazon GameLift Streams will automatically terminate a session after this amount of time has elapsed, regardless of any existing client connections. Default value is 43200 (12 hours).</p>
329 pub fn get_session_length_seconds(&self) -> &::std::option::Option<i32> {
330 self.inner.get_session_length_seconds()
331 }
332 ///
333 /// Appends an item to `AdditionalLaunchArgs`.
334 ///
335 /// To override the contents of this collection use [`set_additional_launch_args`](Self::set_additional_launch_args).
336 ///
337 /// <p>A list of CLI arguments that are sent to the streaming server when a stream session launches. You can use this to configure the application or stream session details. You can also provide custom arguments that Amazon GameLift Streams passes to your game client.</p>
338 /// <p><code>AdditionalEnvironmentVariables</code> and <code>AdditionalLaunchArgs</code> have similar purposes. <code>AdditionalEnvironmentVariables</code> passes data using environment variables; while <code>AdditionalLaunchArgs</code> passes data using command-line arguments.</p>
339 pub fn additional_launch_args(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
340 self.inner = self.inner.additional_launch_args(input.into());
341 self
342 }
343 /// <p>A list of CLI arguments that are sent to the streaming server when a stream session launches. You can use this to configure the application or stream session details. You can also provide custom arguments that Amazon GameLift Streams passes to your game client.</p>
344 /// <p><code>AdditionalEnvironmentVariables</code> and <code>AdditionalLaunchArgs</code> have similar purposes. <code>AdditionalEnvironmentVariables</code> passes data using environment variables; while <code>AdditionalLaunchArgs</code> passes data using command-line arguments.</p>
345 pub fn set_additional_launch_args(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
346 self.inner = self.inner.set_additional_launch_args(input);
347 self
348 }
349 /// <p>A list of CLI arguments that are sent to the streaming server when a stream session launches. You can use this to configure the application or stream session details. You can also provide custom arguments that Amazon GameLift Streams passes to your game client.</p>
350 /// <p><code>AdditionalEnvironmentVariables</code> and <code>AdditionalLaunchArgs</code> have similar purposes. <code>AdditionalEnvironmentVariables</code> passes data using environment variables; while <code>AdditionalLaunchArgs</code> passes data using command-line arguments.</p>
351 pub fn get_additional_launch_args(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
352 self.inner.get_additional_launch_args()
353 }
354 ///
355 /// Adds a key-value pair to `AdditionalEnvironmentVariables`.
356 ///
357 /// To override the contents of this collection use [`set_additional_environment_variables`](Self::set_additional_environment_variables).
358 ///
359 /// <p>A set of options that you can use to control the stream session runtime environment, expressed as a set of key-value pairs. You can use this to configure the application or stream session details. You can also provide custom environment variables that Amazon GameLift Streams passes to your game client.</p><note>
360 /// <p>If you want to debug your application with environment variables, we recommend that you do so in a local environment outside of Amazon GameLift Streams. For more information, refer to the Compatibility Guidance in the troubleshooting section of the Developer Guide.</p>
361 /// </note>
362 /// <p><code>AdditionalEnvironmentVariables</code> and <code>AdditionalLaunchArgs</code> have similar purposes. <code>AdditionalEnvironmentVariables</code> passes data using environment variables; while <code>AdditionalLaunchArgs</code> passes data using command-line arguments.</p>
363 pub fn additional_environment_variables(
364 mut self,
365 k: impl ::std::convert::Into<::std::string::String>,
366 v: impl ::std::convert::Into<::std::string::String>,
367 ) -> Self {
368 self.inner = self.inner.additional_environment_variables(k.into(), v.into());
369 self
370 }
371 /// <p>A set of options that you can use to control the stream session runtime environment, expressed as a set of key-value pairs. You can use this to configure the application or stream session details. You can also provide custom environment variables that Amazon GameLift Streams passes to your game client.</p><note>
372 /// <p>If you want to debug your application with environment variables, we recommend that you do so in a local environment outside of Amazon GameLift Streams. For more information, refer to the Compatibility Guidance in the troubleshooting section of the Developer Guide.</p>
373 /// </note>
374 /// <p><code>AdditionalEnvironmentVariables</code> and <code>AdditionalLaunchArgs</code> have similar purposes. <code>AdditionalEnvironmentVariables</code> passes data using environment variables; while <code>AdditionalLaunchArgs</code> passes data using command-line arguments.</p>
375 pub fn set_additional_environment_variables(
376 mut self,
377 input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
378 ) -> Self {
379 self.inner = self.inner.set_additional_environment_variables(input);
380 self
381 }
382 /// <p>A set of options that you can use to control the stream session runtime environment, expressed as a set of key-value pairs. You can use this to configure the application or stream session details. You can also provide custom environment variables that Amazon GameLift Streams passes to your game client.</p><note>
383 /// <p>If you want to debug your application with environment variables, we recommend that you do so in a local environment outside of Amazon GameLift Streams. For more information, refer to the Compatibility Guidance in the troubleshooting section of the Developer Guide.</p>
384 /// </note>
385 /// <p><code>AdditionalEnvironmentVariables</code> and <code>AdditionalLaunchArgs</code> have similar purposes. <code>AdditionalEnvironmentVariables</code> passes data using environment variables; while <code>AdditionalLaunchArgs</code> passes data using command-line arguments.</p>
386 pub fn get_additional_environment_variables(
387 &self,
388 ) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
389 self.inner.get_additional_environment_variables()
390 }
391}