Type Alias TcpServer

Source
pub type TcpServer<C> = Server<TcpStream, C, TcpInfo>;
Expand description

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);
 

Aliased Type§

pub struct TcpServer<C> { /* private fields */ }

Implementations§

Source§

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,

TCP server implementation.

Source

pub fn new(address: &SocketAddr, codec: C) -> Result<TcpServer<C>, Error>

Source

pub fn connect( &mut self, address: SocketAddr, ) -> impl Future<Item = (), Error = Error>