Function ehttpd::reqresp

source ·
pub fn reqresp<F>(source: &mut Source, sink: &mut Sink, handler: F) -> bool
where F: Fn(Request<'_>) -> Response + Send + Sync + 'static,
Expand description

An adapter to bridge a source,sink-handler to a request->response-handler

Examples found in repository?
examples/helloworld.rs (lines 11-15)
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fn main() {
    // Define our request handler
    let connection_handler = |source: &mut Source, sink: &mut Sink| {
        // Handle request
        ehttpd::reqresp(source, sink, |_: Request| {
            let mut response = Response::new_200_ok();
            response.set_body_data(b"Hello world\r\n");
            response
        })
    };

    // Create a server that listens at [::]:9999 with up to 2048 worker threads under load if necessary
    let server: Server<_> = Server::new(2048, connection_handler);
    server.accept("[::]:9999").expect("server failed");
}
More examples
Hide additional examples
examples/helloworld-nokeepalive.rs (lines 11-16)
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
fn main() {
    // Define our request handler
    let connection_handler = |source: &mut Source, sink: &mut Sink| {
        // Handle request
        ehttpd::reqresp(source, sink, |_: Request| {
            let mut response = Response::new_200_ok();
            response.set_body_data(b"Hello world\r\n");
            response.set_connection_close();
            response
        })
    };

    // Create a server that listens at [::]:9999 with up to 2048 worker threads under load if necessary
    let server: Server<_> = Server::new(2048, connection_handler);
    server.accept("[::]:9999").expect("server failed");
}
examples/teapot.rs (lines 11-21)
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
fn main() {
    // Define our request handler
    let connection_handler = |source: &mut Source, sink: &mut Sink| {
        // Handle request
        ehttpd::reqresp(source, sink, |request| {
            // Create the response body
            let mut message = b"There are only teapots in ".to_vec();
            message.extend_from_slice(&request.target);
            message.extend_from_slice(b"\r\n");

            // Send the response
            let mut response = Response::new_status_reason(418, "I'm a teapot");
            response.set_body_data(message);
            response
        })
    };

    // Create a server that listens at [::]:9999 with up to 2048 worker threads under load if necessary
    let server: Server<_> = Server::new(2048, connection_handler);
    server.accept("[::]:9999").expect("server failed");
}