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.

Main metrics

Overview
Name With Owneractix/actix-net
Primary LanguageRust
Program languageRust (Language Count: 4)
Platform
License:Apache License 2.0
所有者活动
Created At2018-08-19 17:47:41
Pushed At2025-06-12 03:07:09
Last Commit At2025-06-12 03:51:56
Release Count270
Last Release Nameserver-v2.6.0 (Posted on )
First Release Namev0.1.0 (Posted on )
用户参与
Stargazers Count746
Watchers Count35
Fork Count359
Commits Count1.4k
Has Issues Enabled
Issues Count130
Issue Open Count14
Pull Requests Count446
Pull Requests Open Count6
Pull Requests Close Count95
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private