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}