Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. use std::net::SocketAddr;
  2. use tokio::prelude::future::Map;
  3. use tokio::sync::mpsc::{channel, Receiver, Sender};
  4. use tokio::{net::TcpListener, prelude::*};
  5.  
  6. fn main() {
  7. let addr = "127.0.0.1:8118".parse::<SocketAddr>().unwrap();
  8. let listener = TcpListener::bind(&addr).expect("unable to bind");
  9. let (sender, _): (Sender<char>, Receiver<char>) = channel(64);
  10.  
  11. tokio::run(
  12. listener
  13. .incoming()
  14. .and_then(|s| tokio::io::read_to_end(s, vec![]))
  15. .map_err(|e| panic!("failed: {:?}", e))
  16. .for_each(move |(_socket, buf)| {
  17. let s = sender.clone();
  18. println!("Received: {:#?}", buf);
  19. let c = buf[0] as char;
  20. if c == 'a' {
  21. s.send(c).map_err(|e| panic!("failed: {:?}", e)).map(|_| ())
  22. } else {
  23. Future::map() // What to do now?
  24. }
  25. }),
  26. );
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement