xwt_web/
error_as_error_code.rs1use wasm_bindgen::JsCast as _;
4
5use crate::{Error, StreamReadError, StreamWriteError};
6
7impl xwt_core::stream::ErrorAsErrorCode for Error {
8 fn as_error_code(&self) -> Option<xwt_core::stream::ErrorCode> {
9 let error: &web_wt_sys::WebTransportError = self.0.dyn_ref()?;
10 if error.source() != web_wt_sys::WebTransportErrorSource::Stream {
11 return None;
12 }
13 let code = error.stream_error_code()?;
14 Some(code)
15 }
16}
17impl xwt_core::stream::ErrorAsErrorCode for StreamReadError {
18 fn as_error_code(&self) -> Option<xwt_core::stream::ErrorCode> {
19 match self {
20 Self::ByobReadConsumedBuffer => None,
21 Self::Closed => Some(0),
22 Self::Read(error) => error.as_error_code(),
23 }
24 }
25}
26
27impl xwt_core::stream::ErrorAsErrorCode for StreamWriteError {
28 fn as_error_code(&self) -> Option<xwt_core::stream::ErrorCode> {
29 match self {
30 Self::ZeroSizeWriteBuffer => None,
31 Self::Write(error) => error.as_error_code(),
32 }
33 }
34}