Struct fibers::net::TcpListener [] [src]

pub struct TcpListener { /* fields omitted */ }

A structure representing a socket server.

Examples

// See also: fibers/examples/tcp_example.rs
use fibers::{Executor, InPlaceExecutor, Spawn};
use fibers::net::{TcpListener, TcpStream};
use fibers::sync::oneshot;
use futures::{Future, Stream};

let mut executor = InPlaceExecutor::new().unwrap();
let (addr_tx, addr_rx) = oneshot::channel();

// Spawns TCP listener
executor.spawn(TcpListener::bind("127.0.0.1:0".parse().unwrap())
    .and_then(|listener| {
        let addr = listener.local_addr().unwrap();
        println!("# Start listening: {}", addr);
        addr_tx.send(addr).unwrap();
        listener.incoming()
            .for_each(move |(_client, addr)| {
                println!("# Accepted: {}", addr);
                Ok(())
            })
    })
    .map_err(|e| panic!("{:?}", e)));

// Spawns TCP client
let mut monitor = executor.spawn_monitor(addr_rx.map_err(|e| panic!("{:?}", e))
    .and_then(|server_addr| {
        TcpStream::connect(server_addr).and_then(move |_stream| {
            println!("# Connected: {}", server_addr);
            Ok(())
        })
    }));

// Runs until the TCP client exits
while monitor.poll().unwrap().is_not_ready() {
    executor.run_once().unwrap();
}
println!("# Succeeded");

Methods

impl TcpListener
[src]

Makes a future to create a new TcpListener which will be bound to the specified address.

Makes a stream of the connections which will be accepted by this listener.

Returns the local socket address of this listener.

Get the value of the SO_ERROR option on this socket.

This will retrieve the stored error in the underlying socket, clearing the field in the process. This can be useful for checking errors between calls.

Calls f with the reference to the inner socket.

Trait Implementations

impl Debug for TcpListener
[src]

Formats the value using the given formatter.