diff options
Diffstat (limited to 'ext/websocket/lib.rs')
-rw-r--r-- | ext/websocket/lib.rs | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs index ebb2186d0..32ac4cf03 100644 --- a/ext/websocket/lib.rs +++ b/ext/websocket/lib.rs @@ -1,7 +1,6 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. use deno_core::error::invalid_hostname; -use deno_core::error::null_opbuf; use deno_core::error::AnyError; use deno_core::futures::stream::SplitSink; use deno_core::futures::stream::SplitStream; @@ -309,29 +308,28 @@ where } #[derive(Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct SendArgs { - rid: ResourceId, - kind: String, - text: Option<String>, +#[serde(tag = "kind", content = "value", rename_all = "camelCase")] +pub enum SendValue { + Text(String), + Binary(ZeroCopyBuf), + Pong, } pub async fn op_ws_send( state: Rc<RefCell<OpState>>, - args: SendArgs, - buf: Option<ZeroCopyBuf>, + rid: ResourceId, + value: SendValue, ) -> Result<(), AnyError> { - let msg = match args.kind.as_str() { - "text" => Message::Text(args.text.unwrap()), - "binary" => Message::Binary(buf.ok_or_else(null_opbuf)?.to_vec()), - "pong" => Message::Pong(vec![]), - _ => unreachable!(), + let msg = match value { + SendValue::Text(text) => Message::Text(text), + SendValue::Binary(buf) => Message::Binary(buf.to_vec()), + SendValue::Pong => Message::Pong(vec![]), }; let resource = state .borrow_mut() .resource_table - .get::<WsStreamResource>(args.rid)?; + .get::<WsStreamResource>(rid)?; resource.send(msg).await?; Ok(()) } |