Add send_panel_json_async()
This commit is contained in:
parent
ac5d6475f1
commit
2d242520c1
|
@ -60,7 +60,7 @@ pub enum MagpieClientMsg {
|
|||
/// A [Messenger] specialized for Magpie clients.
|
||||
pub type ClientMessenger<T> = Messenger<T, MagpieClientMsg, MagpieServerMsg>;
|
||||
|
||||
impl<T: Read + Write> ClientMessenger<T> {
|
||||
impl<T: Write> ClientMessenger<T> {
|
||||
pub fn send_panel_json<O: Serialize>(&mut self, id: PanelId, msg: &O) {
|
||||
let msg = serde_json::to_string(msg).unwrap();
|
||||
eprintln!("Sending message: {:?}", msg);
|
||||
|
@ -217,6 +217,20 @@ mod async_messages {
|
|||
use futures_util::{AsyncReadExt, AsyncWriteExt};
|
||||
use std::marker::Unpin;
|
||||
|
||||
impl<T: AsyncWriteExt + Unpin> ClientMessenger<T> {
|
||||
pub async fn send_panel_json_async<O: Serialize>(&mut self, id: PanelId, msg: &O) {
|
||||
let msg = serde_json::to_string(msg).unwrap();
|
||||
eprintln!("Sending message: {:?}", msg);
|
||||
|
||||
let _ = self
|
||||
.send_async(&MagpieServerMsg::SendMessage(SendMessage {
|
||||
id,
|
||||
msg: msg.into_bytes(),
|
||||
}))
|
||||
.await;
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: AsyncWriteExt + Unpin, I, O: Serialize> Messenger<T, I, O> {
|
||||
pub async fn send_async(&mut self, msg: &O) -> std::io::Result<()> {
|
||||
use byteorder::{LittleEndian, WriteBytesExt};
|
||||
|
@ -226,6 +240,7 @@ mod async_messages {
|
|||
msg.write_u32::<LittleEndian>(len)?;
|
||||
msg.extend_from_slice(&payload);
|
||||
self.transport.write_all(&msg).await?;
|
||||
self.transport.flush().await?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue