aboutsummaryrefslogtreecommitdiffstats
path: root/src/error.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-13 10:38:58 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-13 10:38:58 +0100
commit1c55b582a8e874b5dc776950c92a1ecf622d03fe (patch)
treecc3f21fa0a8d1fa6ea32ab0c3fd391c14c3ba29f /src/error.rs
parentc658ab440f8e69ac406b18732dbf276c084926b6 (diff)
downloadpeanuts-1c55b582a8e874b5dc776950c92a1ecf622d03fe.tar.gz
peanuts-1c55b582a8e874b5dc776950c92a1ecf622d03fe.tar.bz2
peanuts-1c55b582a8e874b5dc776950c92a1ecf622d03fe.zip
feat: websocket-framed reader and writer
Diffstat (limited to '')
-rw-r--r--src/error.rs25
1 files changed, 25 insertions, 0 deletions
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<JsValue> for Error {
+ fn from(e: JsValue) -> Self {
+ Self::Websocket(WebsocketError::Write(e))
+ }
}
impl From<std::io::Error> for Error {