Add Messenger::send_async()
This commit is contained in:
parent
c244834004
commit
ac5d6475f1
|
@ -214,10 +214,23 @@ impl<T: Read, I: DeserializeOwned, O> Messenger<T, I, O> {
|
|||
#[cfg(feature = "async")]
|
||||
mod async_messages {
|
||||
use super::*;
|
||||
use futures_util::AsyncReadExt;
|
||||
use futures_util::{AsyncReadExt, AsyncWriteExt};
|
||||
use std::marker::Unpin;
|
||||
|
||||
impl<T: AsyncReadExt + Unpin, I: DeserializeOwned, O: Serialize> Messenger<T, I, O> {
|
||||
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};
|
||||
let payload = serde_json::to_vec(msg).unwrap();
|
||||
let len = payload.len() as u32;
|
||||
let mut msg = Vec::with_capacity(4 + payload.len());
|
||||
msg.write_u32::<LittleEndian>(len)?;
|
||||
msg.extend_from_slice(&payload);
|
||||
self.transport.write_all(&msg).await?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: AsyncReadExt + Unpin, I: DeserializeOwned, O> Messenger<T, I, O> {
|
||||
pub async fn recv(&mut self) -> std::io::Result<I> {
|
||||
let mut buf = [0u8; 1024];
|
||||
|
||||
|
|
Loading…
Reference in New Issue