mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-02 12:50:54 +00:00
29 lines
897 B
Rust
29 lines
897 B
Rust
|
use anyhow::Result;
|
||
|
use krata::control::{ListRequest, Message, Request, RequestBox};
|
||
|
use tokio::{
|
||
|
io::{AsyncBufReadExt, AsyncWriteExt, BufReader},
|
||
|
net::TcpStream,
|
||
|
};
|
||
|
use tokio_stream::{wrappers::LinesStream, StreamExt};
|
||
|
|
||
|
#[tokio::main]
|
||
|
async fn main() -> Result<()> {
|
||
|
let mut stream = TcpStream::connect("127.0.0.1:4050").await?;
|
||
|
let (read, mut write) = stream.split();
|
||
|
let mut read = LinesStream::new(BufReader::new(read).lines());
|
||
|
|
||
|
let send = Message::Request(RequestBox {
|
||
|
id: 1,
|
||
|
request: Request::List(ListRequest {}),
|
||
|
});
|
||
|
let mut line = serde_json::to_string(&send)?;
|
||
|
line.push('\n');
|
||
|
write.write_all(line.as_bytes()).await?;
|
||
|
println!("sent: {:?}", send);
|
||
|
while let Some(line) = read.try_next().await? {
|
||
|
let message: Message = serde_json::from_str(&line)?;
|
||
|
println!("received: {:?}", message);
|
||
|
}
|
||
|
Ok(())
|
||
|
}
|