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            .with_retry_classifier(::aws_runtime::service_clock_skew::ServiceClockSkewClassifier::<
144                crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionError,
145            >::new());
146
147        ::std::borrow::Cow::Owned(rcb)
148    }
149}
150
151#[derive(Debug)]
152struct StopDevEnvironmentSessionTelemetryInputCaptureInterceptor;
153
154#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
155impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StopDevEnvironmentSessionTelemetryInputCaptureInterceptor {
156    fn name(&self) -> &'static str {
157        "StopDevEnvironmentSessionTelemetryInputCaptureInterceptor"
158    }
159
160    fn read_before_execution(
161        &self,
162        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
163            '_,
164            ::aws_smithy_runtime_api::client::interceptors::context::Input,
165            ::aws_smithy_runtime_api::client::interceptors::context::Output,
166            ::aws_smithy_runtime_api::client::interceptors::context::Error,
167        >,
168        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
169    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
170        // Nothing to do unless the customer opted in by naming members to record.
171        let ::std::option::Option::Some(requested) = cfg
172            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
173            .filter(|r| !r.is_empty())
174        else {
175            return ::std::result::Result::Ok(());
176        };
177
178        let ::std::option::Option::Some(input) = context.input().downcast_ref::<StopDevEnvironmentSessionInput>() else {
179            // A mismatched input is not this interceptor's concern; skip quietly.
180            return ::std::result::Result::Ok(());
181        };
182
183        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
184        if requested.should_capture("spaceName") {
185            if let ::std::option::Option::Some(value) = input.space_name.as_deref() {
186                captured.insert("spaceName", value);
187            }
188        }
189        if requested.should_capture("projectName") {
190            if let ::std::option::Option::Some(value) = input.project_name.as_deref() {
191                captured.insert("projectName", value);
192            }
193        }
194        if requested.should_capture("id") {
195            if let ::std::option::Option::Some(value) = input.id.as_deref() {
196                captured.insert("id", value);
197            }
198        }
199        if requested.should_capture("sessionId") {
200            if let ::std::option::Option::Some(value) = input.session_id.as_deref() {
201                captured.insert("sessionId", value);
202            }
203        }
204
205        cfg.interceptor_state().store_put(captured);
206        ::std::result::Result::Ok(())
207    }
208}
209#[derive(Debug)]
210struct StopDevEnvironmentSessionResponseDeserializer;
211impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for StopDevEnvironmentSessionResponseDeserializer {
212    fn deserialize_nonstreaming_with_config(
213        &self,
214        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
215        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
216    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
217        let (success, status) = (response.status().is_success(), response.status().as_u16());
218        let headers = response.headers();
219        let body = response.body().bytes().expect("body loaded");
220        #[allow(unused_mut)]
221        let mut force_error = false;
222        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
223        let parse_result = if !success && status != 200 || force_error {
224            crate::protocol_serde::shape_stop_dev_environment_session::de_stop_dev_environment_session_http_error(status, headers, body)
225        } else {
226            crate::protocol_serde::shape_stop_dev_environment_session::de_stop_dev_environment_session_http_response(status, headers, body)
227        };
228        crate::protocol_serde::type_erase_result(parse_result)
229    }
230}
231#[derive(Debug)]
232struct StopDevEnvironmentSessionRequestSerializer;
233impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for StopDevEnvironmentSessionRequestSerializer {
234    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
235    fn serialize_input(
236        &self,
237        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
238        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
239    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
240        let input = input
241            .downcast::<crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionInput>()
242            .expect("correct type");
243        let _header_serialization_settings = _cfg
244            .load::<crate::serialization_settings::HeaderSerializationSettings>()
245            .cloned()
246            .unwrap_or_default();
247        let mut request_builder = {
248            #[allow(clippy::uninlined_format_args)]
249            fn uri_base(
250                _input: &crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionInput,
251                output: &mut ::std::string::String,
252            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
253                use ::std::fmt::Write as _;
254                let input_1 = &_input.space_name;
255                let input_1 = input_1
256                    .as_ref()
257                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("space_name", "cannot be empty or unset"))?;
258                let space_name = ::aws_smithy_http::label::fmt_string(input_1, ::aws_smithy_http::label::EncodingStrategy::Default);
259                if space_name.is_empty() {
260                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
261                        "space_name",
262                        "cannot be empty or unset",
263                    ));
264                }
265                let input_2 = &_input.project_name;
266                let input_2 = input_2
267                    .as_ref()
268                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("project_name", "cannot be empty or unset"))?;
269                let project_name = ::aws_smithy_http::label::fmt_string(input_2, ::aws_smithy_http::label::EncodingStrategy::Default);
270                if project_name.is_empty() {
271                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
272                        "project_name",
273                        "cannot be empty or unset",
274                    ));
275                }
276                let input_3 = &_input.id;
277                let input_3 = input_3
278                    .as_ref()
279                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("id", "cannot be empty or unset"))?;
280                let id = ::aws_smithy_http::label::fmt_string(input_3, ::aws_smithy_http::label::EncodingStrategy::Default);
281                if id.is_empty() {
282                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
283                        "id",
284                        "cannot be empty or unset",
285                    ));
286                }
287                let input_4 = &_input.session_id;
288                let input_4 = input_4
289                    .as_ref()
290                    .ok_or_else(|| ::aws_smithy_types::error::operation::BuildError::missing_field("session_id", "cannot be empty or unset"))?;
291                let session_id = ::aws_smithy_http::label::fmt_string(input_4, ::aws_smithy_http::label::EncodingStrategy::Default);
292                if session_id.is_empty() {
293                    return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::missing_field(
294                        "session_id",
295                        "cannot be empty or unset",
296                    ));
297                }
298                ::std::write!(
299                    output,
300                    "/v1/spaces/{spaceName}/projects/{projectName}/devEnvironments/{id}/session/{sessionId}",
301                    spaceName = space_name,
302                    projectName = project_name,
303                    id = id,
304                    sessionId = session_id
305                )
306                .expect("formatting should succeed");
307                ::std::result::Result::Ok(())
308            }
309            #[allow(clippy::unnecessary_wraps)]
310            fn update_http_builder(
311                input: &crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionInput,
312                builder: ::http_1x::request::Builder,
313            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
314                let mut uri = ::std::string::String::new();
315                uri_base(input, &mut uri)?;
316                ::std::result::Result::Ok(builder.method("DELETE").uri(uri))
317            }
318            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
319            builder
320        };
321        let body = ::aws_smithy_types::body::SdkBody::from("");
322
323        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
324    }
325}
326#[derive(Debug)]
327struct StopDevEnvironmentSessionEndpointParamsInterceptor;
328
329#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
330impl ::aws_smithy_runtime_api::client::interceptors::Intercept for StopDevEnvironmentSessionEndpointParamsInterceptor {
331    fn name(&self) -> &'static str {
332        "StopDevEnvironmentSessionEndpointParamsInterceptor"
333    }
334
335    fn read_before_execution(
336        &self,
337        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
338            '_,
339            ::aws_smithy_runtime_api::client::interceptors::context::Input,
340            ::aws_smithy_runtime_api::client::interceptors::context::Output,
341            ::aws_smithy_runtime_api::client::interceptors::context::Error,
342        >,
343        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
344    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
345        let _input = context
346            .input()
347            .downcast_ref::<StopDevEnvironmentSessionInput>()
348            .ok_or("failed to downcast to StopDevEnvironmentSessionInput")?;
349
350        let params = crate::config::endpoint::Params::builder()
351            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
352            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
353            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
354            .build()
355            .map_err(|err| {
356                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
357            })?;
358        cfg.interceptor_state()
359            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
360        ::std::result::Result::Ok(())
361    }
362}
363
364// The get_* functions below are generated from JMESPath expressions in the
365// operationContextParams trait. They target the operation's input shape.
366
367/// Error type for the `StopDevEnvironmentSessionError` operation.
368#[non_exhaustive]
369#[derive(::std::fmt::Debug)]
370pub enum StopDevEnvironmentSessionError {
371    /// <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>
372    AccessDeniedException(crate::types::error::AccessDeniedException),
373    /// <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>
374    ConflictException(crate::types::error::ConflictException),
375    /// <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>
376    ResourceNotFoundException(crate::types::error::ResourceNotFoundException),
377    /// <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>
378    ServiceQuotaExceededException(crate::types::error::ServiceQuotaExceededException),
379    /// <p>The request was denied due to request throttling.</p>
380    ThrottlingException(crate::types::error::ThrottlingException),
381    /// <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>
382    ValidationException(crate::types::error::ValidationException),
383    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
384    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
385    variable wildcard pattern and check `.code()`:
386     \
387    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
388     \
389    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-StopDevEnvironmentSessionError) for what information is available for the error.")]
390    Unhandled(crate::error::sealed_unhandled::Unhandled),
391}
392impl StopDevEnvironmentSessionError {
393    /// Creates the `StopDevEnvironmentSessionError::Unhandled` variant from any error type.
394    pub fn unhandled(
395        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
396    ) -> Self {
397        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
398            source: err.into(),
399            meta: ::std::default::Default::default(),
400        })
401    }
402
403    /// Creates the `StopDevEnvironmentSessionError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
404    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
405        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
406            source: err.clone().into(),
407            meta: err,
408        })
409    }
410    ///
411    /// Returns error metadata, which includes the error code, message,
412    /// request ID, and potentially additional information.
413    ///
414    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
415        match self {
416            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
417            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
418            Self::ResourceNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
419            Self::ServiceQuotaExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
420            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
421            Self::ValidationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
422            Self::Unhandled(e) => &e.meta,
423        }
424    }
425    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::AccessDeniedException`.
426    pub fn is_access_denied_exception(&self) -> bool {
427        matches!(self, Self::AccessDeniedException(_))
428    }
429    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ConflictException`.
430    pub fn is_conflict_exception(&self) -> bool {
431        matches!(self, Self::ConflictException(_))
432    }
433    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ResourceNotFoundException`.
434    pub fn is_resource_not_found_exception(&self) -> bool {
435        matches!(self, Self::ResourceNotFoundException(_))
436    }
437    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ServiceQuotaExceededException`.
438    pub fn is_service_quota_exceeded_exception(&self) -> bool {
439        matches!(self, Self::ServiceQuotaExceededException(_))
440    }
441    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ThrottlingException`.
442    pub fn is_throttling_exception(&self) -> bool {
443        matches!(self, Self::ThrottlingException(_))
444    }
445    /// Returns `true` if the error kind is `StopDevEnvironmentSessionError::ValidationException`.
446    pub fn is_validation_exception(&self) -> bool {
447        matches!(self, Self::ValidationException(_))
448    }
449}
450impl ::std::error::Error for StopDevEnvironmentSessionError {
451    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
452        match self {
453            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
454            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
455            Self::ResourceNotFoundException(_inner) => ::std::option::Option::Some(_inner),
456            Self::ServiceQuotaExceededException(_inner) => ::std::option::Option::Some(_inner),
457            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
458            Self::ValidationException(_inner) => ::std::option::Option::Some(_inner),
459            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
460        }
461    }
462}
463impl ::std::fmt::Display for StopDevEnvironmentSessionError {
464    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
465        match self {
466            Self::AccessDeniedException(_inner) => _inner.fmt(f),
467            Self::ConflictException(_inner) => _inner.fmt(f),
468            Self::ResourceNotFoundException(_inner) => _inner.fmt(f),
469            Self::ServiceQuotaExceededException(_inner) => _inner.fmt(f),
470            Self::ThrottlingException(_inner) => _inner.fmt(f),
471            Self::ValidationException(_inner) => _inner.fmt(f),
472            Self::Unhandled(_inner) => {
473                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
474                    write!(f, "unhandled error ({code})")
475                } else {
476                    f.write_str("unhandled error")
477                }
478            }
479        }
480    }
481}
482impl ::aws_smithy_types::retry::ProvideErrorKind for StopDevEnvironmentSessionError {
483    fn code(&self) -> ::std::option::Option<&str> {
484        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
485    }
486    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
487        match self {
488            Self::ThrottlingException(inner) => ::std::option::Option::Some(inner.retryable_error_kind()),
489            _ => ::std::option::Option::None,
490        }
491    }
492}
493impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for StopDevEnvironmentSessionError {
494    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
495        match self {
496            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
497            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
498            Self::ResourceNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
499            Self::ServiceQuotaExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
500            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
501            Self::ValidationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
502            Self::Unhandled(_inner) => &_inner.meta,
503        }
504    }
505}
506impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for StopDevEnvironmentSessionError {
507    fn create_unhandled_error(
508        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
509        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
510    ) -> Self {
511        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
512            source,
513            meta: meta.unwrap_or_default(),
514        })
515    }
516}
517impl ::aws_types::request_id::RequestId for crate::operation::stop_dev_environment_session::StopDevEnvironmentSessionError {
518    fn request_id(&self) -> Option<&str> {
519        self.meta().request_id()
520    }
521}
522
523pub use crate::operation::stop_dev_environment_session::_stop_dev_environment_session_input::StopDevEnvironmentSessionInput;
524
525pub use crate::operation::stop_dev_environment_session::_stop_dev_environment_session_output::StopDevEnvironmentSessionOutput;
526
527mod _stop_dev_environment_session_input;
528
529mod _stop_dev_environment_session_output;
530
531/// Builders
532pub mod builders;