[−][src]Type Definition daemon_engine::tcp::TcpServer
type TcpServer<C> = Server<TcpStream, C, TcpInfo>;
TcpServer is a Server implementation over TcpStream and TcpInfo types with a generic codec
use std::net::{SocketAddr, IpAddr, Ipv4Addr}; extern crate tokio; use tokio::prelude::*; use tokio::{spawn, run}; #[macro_use] extern crate serde_derive; extern crate daemon_engine; use daemon_engine::{TcpServer, JsonCodec}; #[derive(Debug, Clone, Serialize, Deserialize)] struct Request {} #[derive(Debug, Clone, Serialize, Deserialize)] struct Response {} let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 8111); let server = future::lazy(move || { let mut s = TcpServer::<JsonCodec<Response, Request>>::new(&addr, JsonCodec::new()).unwrap(); let server_handle = s .incoming() .unwrap() .for_each(move |r| { println!("Request data {:?} info: {:?}", r.data(), r.info()); r.send(Response{}).wait().unwrap(); Ok(()) }).map_err(|_e| ()); spawn(server_handle); Ok(()) }); run(server);
Methods
impl<C> TcpServer<C> where
C: Encoder + Decoder + Clone + Send + 'static,
<C as Decoder>::Item: Clone + Send + Debug,
<C as Decoder>::Error: Send + Debug,
<C as Encoder>::Item: Clone + Send + Debug,
<C as Encoder>::Error: Send + Debug,
[src]
C: Encoder + Decoder + Clone + Send + 'static,
<C as Decoder>::Item: Clone + Send + Debug,
<C as Decoder>::Error: Send + Debug,
<C as Encoder>::Item: Clone + Send + Debug,
<C as Encoder>::Error: Send + Debug,
TCP server implementation.