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")]
|
#[cfg(feature = "async")]
|
||||||
mod async_messages {
|
mod async_messages {
|
||||||
use super::*;
|
use super::*;
|
||||||
use futures_util::AsyncReadExt;
|
use futures_util::{AsyncReadExt, AsyncWriteExt};
|
||||||
use std::marker::Unpin;
|
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> {
|
pub async fn recv(&mut self) -> std::io::Result<I> {
|
||||||
let mut buf = [0u8; 1024];
|
let mut buf = [0u8; 1024];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue