Expand description
Spirit extension for Hyper servers.
This allows having Hyper servers auto-spawned from configuration. It is possible to put them on top of arbitrary stream-style IO objects (TcpStream, UdsStream, these wrapped in SSL…).
§Tokio runtime
This uses the spirit_tokio crate under the hood. Similar drawback with initializing a
runtime applies here too (see the spirit_tokio docs for details).
§Examples
use hyper::{Body, Request, Response};
use serde::Deserialize;
use spirit::{Empty, Pipeline, Spirit};
use spirit::prelude::*;
use spirit_hyper::{server_from_handler, BuildServer, HttpServer};
const DEFAULT_CONFIG: &str = r#"
[server]
port = 2234
"#;
#[derive(Default, Deserialize)]
struct Config {
server: HttpServer,
}
impl Config {
fn server(&self) -> HttpServer {
self.server.clone()
}
}
async fn request(_req: Request<Body>) -> Response<Body> {
Response::new(Body::from("Hello world\n"))
}
fn main() {
Spirit::<Empty, Config>::new()
.config_defaults(DEFAULT_CONFIG)
.with(
// Let's build a http server as configured by the user
Pipeline::new("listen")
.extract_cfg(Config::server)
// This is where we teach the server what it serves. It is the usual stuff from
// hyper.
.transform(BuildServer(server_from_handler(request)))
)
.run(|spirit| {
Ok(())
});
}Further examples (with more flexible handling) are in the git repository.
Structs§
- Acceptor
- A plumbing wrapper type.
- Activate
- A plumbing helper type.
- Build
Server - A
Transformationto turn aBuilderinto aServer. - Hyper
Cfg - Configuration of Hyper HTTP servers.
- Hyper
Server - A
Fragmentfor hyper servers.
Enums§
- Http
Mode - Configuration of the selected HTTP protocol version.
Traits§
- Server
Builder - A trait abstracting the creation of servers.
Functions§
- server_
from_ handler - A simplified version of creating the
ServerBuilder.
Type Aliases§
- Http
Server - A type alias for http (plain TCP) hyper server.