actix-net

framework for composable networking services

Github stars Tracking Chart

Actix net Build Status codecov Join the chat at https://gitter.im/actix/actix

Actix net - framework for composable network services

Documentation & community resources

Example

fn main() -> io::Result<()> {
    // load ssl keys
    let mut builder = SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap();
    builder.set_private_key_file("./examples/key.pem", SslFiletype::PEM).unwrap();
    builder.set_certificate_chain_file("./examples/cert.pem").unwrap();
    let acceptor = builder.build();

    let num = Arc::new(AtomicUsize::new(0));

    // bind socket address and start workers. By default server uses number of
    // available logical cpu as threads count. actix net start separate
    // instances of service pipeline in each worker.
    Server::build()
        .bind(
            // configure service pipeline
            "basic", "0.0.0.0:8443",
            move, {
                let num = num.clone();
                let acceptor = acceptor.clone();

                // construct transformation pipeline
                pipeline(
                    // service for converting incoming TcpStream to a SslStream<TcpStream>
                    fn_service(move, stream: actix_rt::net::TcpStream, async move {
                        SslAcceptorExt::accept_async(&acceptor, stream.into_parts().0).await
                            .map_err(, e, println!("Openssl error: {}", e))
                    }))
                // .and_then() combinator chains result of previos service call to argument
                /// for next service calll. in this case, on success we chain
                /// ssl stream to the `logger` service.
                .and_then(fn_service(logger))
                // Next service counts number of connections
                .and_then(move, _, {
                    let num = num.fetch_add(1, Ordering::Relaxed);
                    println!("got ssl connection {:?}", num);
                    future::ok(())
                })
            },
        )?
        .run()
}

License

This project is licensed under either of

at your option.

Code of Conduct

Contribution to the actix-net crate is organized under the terms of the
Contributor Covenant, the maintainer of actix-net, @fafhrd91, promises to
intervene to uphold that code of conduct.

Overview

Name With Owneractix/actix-net
Primary LanguageRust
Program languageRust (Language Count: 3)
Platform
License:Apache License 2.0
Release Count262
Last Release Nametls-v3.3.0 (Posted on )
First Release Namev0.1.0 (Posted on )
Created At2018-08-19 17:47:41
Pushed At2024-05-02 19:20:00
Last Commit At2024-05-02 03:24:47
Stargazers Count680
Watchers Count38
Fork Count339
Commits Count1.3k
Has Issues Enabled
Issues Count121
Issue Open Count11
Pull Requests Count348
Pull Requests Open Count7
Pull Requests Close Count69
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top