use ws_stream_wasm::WsMessage; #[macro_export] macro_rules! send { ($writer:expr,$pkt:expr) => { $writer.send($crate::macros::__generic_packet_to_message($pkt)) }; } #[macro_export] macro_rules! recv { ($reader:expr) => { { if let Some(future_result) = $reader.next().now_or_never() { if let Some(msg) = future_result { if let WsMessage::Binary(msg) = msg { match MessageS2C::try_from(msg.as_slice()) { Ok(d) => Ok(Some(d)), Err(e) => { log::error!("error deserializing message: {}", e); Ok(None) } } } else { Ok(None) } } else { log::error!("pipe closed"); Err("Pipe closed") } } else { Ok(None) } } } } #[macro_export] macro_rules! recv_now { ($reader:expr) => { { if let Some(msg) = $reader.next().await { if let WsMessage::Binary(msg) = msg { match MessageS2C::try_from(msg.as_slice()) { Ok(d) => Ok(Some(d)), Err(e) => { log::error!("error deserializing message: {}", e); Ok(None) } } } else { Ok(None) } } else { log::error!("pipe closed"); Err("Pipe closed") } } }; } pub fn __generic_packet_to_message(pkt: Vec) -> WsMessage { WsMessage::from(pkt) }