From 1c55b582a8e874b5dc776950c92a1ecf622d03fe Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Sun, 13 Apr 2025 10:38:58 +0100 Subject: feat: websocket-framed reader and writer --- src/error.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/error.rs') diff --git a/src/error.rs b/src/error.rs index 717dfdd..4976a78 100644 --- a/src/error.rs +++ b/src/error.rs @@ -7,6 +7,8 @@ use std::{ }; use thiserror::Error; +#[cfg(target_arch = "wasm32")] +use wasm_bindgen::JsValue; use crate::{ element::{Content, Name, NamespaceDeclaration}, @@ -72,6 +74,29 @@ pub enum Error { Deserialize(#[from] DeserializeError), #[error("root element has already been fully processed")] RootElementEnded, + #[cfg(target_arch = "wasm32")] + #[error("websocket error: {0}")] + Websocket(#[from] WebsocketError), +} + +#[cfg(target_arch = "wasm32")] +#[derive(Error, Debug, Clone)] +pub enum WebsocketError { + #[error("write: {0:?}")] + Write(JsValue), + #[error("invalid encoding")] + InvalidEncoding, + #[error("can't decode blob")] + CantDecodeBlob, + #[error("unknown data type")] + UnknownDataType, +} + +#[cfg(target_arch = "wasm32")] +impl From for Error { + fn from(e: JsValue) -> Self { + Self::Websocket(WebsocketError::Write(e)) + } } impl From for Error { -- cgit