diff --git a/examples/producer.rs b/examples/producer.rs index da87830..c7051f0 100644 --- a/examples/producer.rs +++ b/examples/producer.rs @@ -1,11 +1,9 @@ use syndicate::value::Value; use syndicate::packets::{ClientCodec, C2S, S2C, Action}; -use tokio::io::AsyncRead; use tokio::net::TcpStream; use tokio_util::codec::Framed; -use futures::SinkExt; -use futures::StreamExt; -use std::future::Future; +use futures::{SinkExt, StreamExt, poll}; +use std::task::Poll; #[tokio::main] async fn main() -> Result<(), Box> { @@ -13,26 +11,6 @@ async fn main() -> Result<(), Box> { ClientCodec::standard()); frames.send(C2S::Connect(Value::from("chat").wrap())).await?; - // let m = Action::Message( - // Value::simple_record("Says", vec![ - // Value::from("producer").wrap(), - // Value::from(123).wrap(), - // ]).wrap()); - // loop { - // frames.send(C2S::Turn(vec![ - // m.clone(), - // m.clone(), - // m.clone(), - // m.clone(), - // m.clone(), - // m.clone(), - // m.clone(), - // m.clone(), - // m.clone(), - // m.clone(), - // ])).await?; - // } - let mut counter: u64 = 0; loop { counter = counter + 1; @@ -41,12 +19,19 @@ async fn main() -> Result<(), Box> { Value::from("producer").wrap(), Value::from(counter).wrap(), ]).wrap())])).await?; - // match frames.poll_read() { - // None => (), - // Some(res) => match res { - // S2C::Ping() => frames.send(C2S::Pong()).await?, - // other => print!("{:?}\n", other), - // } - // } + loop { + match poll!(frames.next()) { + Poll::Pending => break, + Poll::Ready(None) => { + print!("Server closed connection"); + return Ok(()); + } + Poll::Ready(Some(res)) => { + let p = res?; + print!("{:?}\n", p); + if let S2C::Ping() = p { frames.send(C2S::Pong()).await? } + } + } + } } }