Skip to main content

aws_sdk_codecatalyst/operation/
stop_dev_environment_session.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `StopDevEnvironmentSession`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct StopDevEnvironmentSession;
6impl StopDevEnvironmentSession {
7    /// Creates a new `StopDevEnvironmentSession`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionInput,
14    ) -> ::std::result::Result<
15        crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point(
55            "CodeCatalyst",
56            "StopDevEnvironmentSession",
57            input,
58            runtime_plugins,
59            stop_point,
60        )
61        // Create a parent span for the entire operation. Includes a random, internal-only,
62        // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
63        .instrument(::tracing::debug_span!(
64            "CodeCatalyst.StopDevEnvironmentSession",
65            "rpc.service" = "CodeCatalyst",
66            "rpc.method" = "StopDevEnvironmentSession",
67            "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
68            "rpc.system" = "aws-api",
69        ))
70        .await
71    }
72
73    pub(crate) fn operation_runtime_plugins(
74        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
75        client_config: &crate::config::Config,
76        config_override: ::std::option::Option<crate::config::Builder>,
77    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
78        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
79
80        if let ::std::option::Option::Some(config_override) = config_override {
81            for plugin in config_override.runtime_plugins.iter().cloned() {
82                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
83            }
84            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
85                config_override,
86                client_config.config.clone(),
87                &client_config.runtime_components,
88            ));
89        }
90        runtime_plugins
91    }
92}
93impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for StopDevEnvironmentSession {
94    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
95        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("StopDevEnvironmentSession");
96
97        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
98            StopDevEnvironmentSessionRequestSerializer,
99        ));
100        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
101            StopDevEnvironmentSessionResponseDeserializer,
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
105            crate::config::auth::Params::builder()
106                .operation_name("StopDevEnvironmentSession")
107                .build()
108                .expect("required fields set"),
109        ));
110
111        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
112            "StopDevEnvironmentSession",
113            "CodeCatalyst",
114        ));
115
116        ::std::option::Option::Some(cfg.freeze())
117    }
118
119    fn runtime_components(
120        &self,
121        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
122    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
123        #[allow(unused_mut)]
124        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("StopDevEnvironmentSession")
125            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
126                StopDevEnvironmentSessionTelemetryInputCaptureInterceptor,
127            ))
128            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
129                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
130            ))
131            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
132                StopDevEnvironmentSessionEndpointParamsInterceptor,
133            ))
134            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
135                crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionError,
136            >::new())
137            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
138                crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionError,
139            >::new())
140            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
141                crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionError,
142            >::new());
143
144        ::std::borrow::Cow::Owned(rcb)
145    }
146}
147
148#[derive(Debug)]
149struct StopDevEnvironmentSessionTelemetryInputCaptureInterceptor;
150
151#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
152impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StopDevEnvironmentSessionTelemetryInputCaptureInterceptor {
153    fn name(&self) -> &'static str {
154        "StopDevEnvironmentSessionTelemetryInputCaptureInterceptor"
155    }
156
157    fn read_before_execution(
158        &self,
159        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
160            '_,
161            ::aws_smithy_runtime_api::client::interceptors::context::Input,
162            ::aws_smithy_runtime_api::client::interceptors::context::Output,
163            ::aws_smithy_runtime_api::client::interceptors::context::Error,
164        >,
165        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
166    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
167        // Nothing to do unless the customer opted in by naming members to record.
168        let ::std::option::Option::Some(requested) = cfg
169            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
170            .filter(|r| !r.is_empty())
171        else {
172            return ::std::result::Result::Ok(());
173        };
174
175        let ::std::option::Option::Some(input) = context.input().downcast_ref::<StopDevEnvironmentSessionInput>() else {
176            // A mismatched input is not this interceptor's concern; skip quietly.
177            return ::std::result::Result::Ok(());
178        };
179
180        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
181        if requested.should_capture("spaceName") {
182            if let ::std::option::Option::Some(value) = input.space_name.as_deref() {
183                captured.insert("spaceName", value);
184            }
185        }
186        if requested.should_capture("projectName") {
187            if let ::std::option::Option::Some(value) = input.project_name.as_deref() {
188                captured.insert("projectName", value);
189            }
190        }
191        if requested.should_capture("id") {
192            if let ::std::option::Option::Some(value) = input.id.as_deref() {
193                captured.insert("id", value);
194            }
195        }
196        if requested.should_capture("sessionId") {
197            if let ::std::option::Option::Some(value) = input.session_id.as_deref() {
198                captured.insert("sessionId", value);
199            }
200        }
201
202        cfg.interceptor_state().store_put(captured);
203        ::std::result::Result::Ok(())
204    }
205}
206#[derive(Debug)]
207struct StopDevEnvironmentSessionResponseDeserializer;
208impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for StopDevEnvironmentSessionResponseDeserializer {
209    fn deserialize_nonstreaming_with_config(
210        &self,
211        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
212        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
213    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
214        let (success, status) = (response.status().is_success(), response.status().as_u16());
215        let headers = response.headers();
216        let body = response.body().bytes().expect("body loaded");
217        #[allow(unused_mut)]
218        let mut force_error = false;
219        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
220        let parse_result = if !success && status != 200 || force_error {
221            crate::protocol_serde::shape_stop_dev_environment_session::de_stop_dev_environment_session_http_error(status, headers, body)
222        } else {
223            crate::protocol_serde::shape_stop_dev_environment_session::de_stop_dev_environment_session_http_response(status, headers, body)
224        };
225        crate::protocol_serde::type_erase_result(parse_result)
226    }
227}
228#[derive(Debug)]
229struct StopDevEnvironmentSessionRequestSerializer;
230impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for StopDevEnvironmentSessionRequestSerializer {
231    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
232    fn serialize_input(
233        &self,
234        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
235        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
236    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
237        let input = input
238            .downcast::<crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionInput>()
239            .expect("correct type");
240        let _header_serialization_settings = _cfg
241            .load::<crate::serialization_settings::HeaderSerializationSettings>()
242            .cloned()
243            .unwrap_or_default();
244        let mut request_builder = {
245            #[allow(clippy::uninlined_format_args)]
246            fn uri_base(
247                _input: &crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionInput,
248                output: &mut ::std::string::String,
249            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
250                use ::std::fmt::Write as _;
251                let input_1 = &_input.space_name;
252                let input_1 = input_1
253                    .as_ref()
254                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("space_name", "cannot be empty or unset"))?;
255                let space_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
256                if space_name.is_empty() {
257                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
258                        "space_name",
259                        "cannot be empty or unset",
260                    ));
261                }
262                let input_2 = &_input.project_name;
263                let input_2 = input_2
264                    .as_ref()
265                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("project_name", "cannot be empty or unset"))?;
266                let project_name = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
267                if project_name.is_empty() {
268                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
269                        "project_name",
270                        "cannot be empty or unset",
271                    ));
272                }
273                let input_3 = &_input.id;
274                let input_3 = input_3
275                    .as_ref()
276                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("id", "cannot be empty or unset"))?;
277                let id = ::aws_smithy_http::label::fmt_string(input_3, ::aws_smithy_http::label::EncodingStrategy::Default);
278                if id.is_empty() {
279                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
280                        "id",
281                        "cannot be empty or unset",
282                    ));
283                }
284                let input_4 = &_input.session_id;
285                let input_4 = input_4
286                    .as_ref()
287                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("session_id", "cannot be empty or unset"))?;
288                let session_id = ::aws_smithy_http::label::fmt_string(input_4, ::aws_smithy_http::label::EncodingStrategy::Default);
289                if session_id.is_empty() {
290                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
291                        "session_id",
292                        "cannot be empty or unset",
293                    ));
294                }
295                ::std::write!(
296                    output,
297                    "/v1/spaces/{spaceName}/projects/{projectName}/devEnvironments/{id}/session/{sessionId}",
298                    spaceName = space_name,
299                    projectName = project_name,
300                    id = id,
301                    sessionId = session_id
302                )
303                .expect("formatting should succeed");
304                ::std::result::Result::Ok(())
305            }
306            #[allow(clippy::unnecessary_wraps)]
307            fn update_http_builder(
308                input: &crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionInput,
309                builder: ::http_1x::request::Builder,
310            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
311                let mut uri = ::std::string::String::new();
312                uri_base(input, &mut uri)?;
313                ::std::result::Result::Ok(builder.method("DELETE").uri(uri))
314            }
315            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
316            builder
317        };
318        let body = ::aws_smithy_types::body::SdkBody::from("");
319
320        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
321    }
322}
323#[derive(Debug)]
324struct StopDevEnvironmentSessionEndpointParamsInterceptor;
325
326#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
327impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StopDevEnvironmentSessionEndpointParamsInterceptor {
328    fn name(&self) -> &'static str {
329        "StopDevEnvironmentSessionEndpointParamsInterceptor"
330    }
331
332    fn read_before_execution(
333        &self,
334        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
335            '_,
336            ::aws_smithy_runtime_api::client::interceptors::context::Input,
337            ::aws_smithy_runtime_api::client::interceptors::context::Output,
338            ::aws_smithy_runtime_api::client::interceptors::context::Error,
339        >,
340        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
341    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
342        let _input = context
343            .input()
344            .downcast_ref::<StopDevEnvironmentSessionInput>()
345            .ok_or("failed to downcast to StopDevEnvironmentSessionInput")?;
346
347        let params = crate::config::endpoint::Params::builder()
348            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
349            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
350            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
351            .build()
352            .map_err(|err| {
353                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
354            })?;
355        cfg.interceptor_state()
356            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
357        ::std::result::Result::Ok(())
358    }
359}
360
361// The get_* functions below are generated from JMESPath expressions in the
362// operationContextParams trait. They target the operation's input shape.
363
364/// Error type for the `StopDevEnvironmentSessionError` operation.
365#[non_exhaustive]
366#[derive(::std::fmt::Debug)]
367pub enum StopDevEnvironmentSessionError {
368    /// <p>The request was denied because you don't have sufficient access to perform this action. Verify that you are a member of a role that allows this action.</p>
369    AccessDeniedException(crate::types::error::AccessDeniedException),
370    /// <p>The request was denied because the requested operation would cause a conflict with the current state of a service resource associated with the request. Another user might have updated the resource. Reload, make sure you have the latest data, and then try again.</p>
371    ConflictException(crate::types::error::ConflictException),
372    /// <p>The request was denied because the specified resource was not found. Verify that the spelling is correct and that you have access to the resource.</p>
373    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
374    /// <p>The request was denied because one or more resources has reached its limits for the tier the space belongs to. Either reduce the number of resources, or change the tier if applicable.</p>
375    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
376    /// <p>The request was denied due to request throttling.</p>
377    ThrottlingException(crate::types::error::ThrottlingException),
378    /// <p>The request was denied because an input failed to satisfy the constraints specified by the service. Check the spelling and input requirements, and then try again.</p>
379    ValidationException(crate::types::error::ValidationException),
380    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
381    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
382    variable wildcard pattern and check `.code()`:
383     \
384    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
385     \
386    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-StopDevEnvironmentSessionError) for what information is available for the error.")]
387    Unhandled(crate::error::sealed_unhandled::Unhandled),
388}
389impl StopDevEnvironmentSessionError {
390    /// Creates the `StopDevEnvironmentSessionError::Unhandled` variant from any error type.
391    pub fn unhandled(
392        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
393    ) -> Self {
394        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
395            source: err.into(),
396            meta: ::std::default::Default::default(),
397        })
398    }
399
400    /// Creates the `StopDevEnvironmentSessionError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
401    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
402        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
403            source: err.clone().into(),
404            meta: err,
405        })
406    }
407    ///
408    /// Returns error metadata, which includes the error code, message,
409    /// request ID, and potentially additional information.
410    ///
411    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
412        match self {
413            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
414            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
415            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
416            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
417            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
418            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
419            Self::Unhandled(e) => &e.meta,
420        }
421    }
422    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::AccessDeniedException`.
423    pub fn is_access_denied_exception(&self) -> bool {
424        matches!(self, Self::AccessDeniedException(_))
425    }
426    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ConflictException`.
427    pub fn is_conflict_exception(&self) -> bool {
428        matches!(self, Self::ConflictException(_))
429    }
430    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ResourceNotFoundException`.
431    pub fn is_resource_not_found_exception(&self) -> bool {
432        matches!(self, Self::ResourceNotFoundException(_))
433    }
434    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ServiceQuotaExceededException`.
435    pub fn is_service_quota_exceeded_exception(&self) -> bool {
436        matches!(self, Self::ServiceQuotaExceededException(_))
437    }
438    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ThrottlingException`.
439    pub fn is_throttling_exception(&self) -> bool {
440        matches!(self, Self::ThrottlingException(_))
441    }
442    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ValidationException`.
443    pub fn is_validation_exception(&self) -> bool {
444        matches!(self, Self::ValidationException(_))
445    }
446}
447impl ::std::error::Error for StopDevEnvironmentSessionError {
448    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
449        match self {
450            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
451            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
452            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
453            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
454            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
455            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
456            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
457        }
458    }
459}
460impl ::std::fmt::Display for StopDevEnvironmentSessionError {
461    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
462        match self {
463            Self::AccessDeniedException(_inner) => _inner.fmt(f),
464            Self::ConflictException(_inner) => _inner.fmt(f),
465            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
466            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
467            Self::ThrottlingException(_inner) => _inner.fmt(f),
468            Self::ValidationException(_inner) => _inner.fmt(f),
469            Self::Unhandled(_inner) => {
470                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
471                    write!(f, "unhandled error ({code})")
472                } else {
473                    f.write_str("unhandled error")
474                }
475            }
476        }
477    }
478}
479impl ::aws_smithy_types::retry::ProvideErrorKind for StopDevEnvironmentSessionError {
480    fn code(&self) -> ::std::option::Option<&str> {
481        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
482    }
483    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
484        match self {
485            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
486            _ => ::std::option::Option::None,
487        }
488    }
489}
490impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for StopDevEnvironmentSessionError {
491    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
492        match self {
493            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
494            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
495            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
496            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
497            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
498            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
499            Self::Unhandled(_inner) => &_inner.meta,
500        }
501    }
502}
503impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for StopDevEnvironmentSessionError {
504    fn create_unhandled_error(
505        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
506        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
507    ) -> Self {
508        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
509            source,
510            meta: meta.unwrap_or_default(),
511        })
512    }
513}
514impl ::aws_types::request_id::RequestId for crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionError {
515    fn request_id(&self) -> Option<&str> {
516        self.meta().request_id()
517    }
518}
519
520pub use crate::operation::stop_dev_environment_session::_stop_dev_environment_session_input::StopDevEnvironmentSessionInput;
521
522pub use crate::operation::stop_dev_environment_session::_stop_dev_environment_session_output::StopDevEnvironmentSessionOutput;
523
524mod _stop_dev_environment_session_input;
525
526mod _stop_dev_environment_session_output;
527
528/// Builders
529pub mod builders;