Skip to content

Instantly share code, notes, and snippets.

@Ogeon
Created April 11, 2016 16:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ogeon/5b9de0f2cb5e744841f75ffee75a798b to your computer and use it in GitHub Desktop.
Save Ogeon/5b9de0f2cb5e744841f75ffee75a798b to your computer and use it in GitHub Desktop.
Hyper `Control::ready` bahavior
extern crate hyper;
use hyper::server::{Server, Handler, Request, Response};
use hyper::net::{HttpStream};
use hyper::{Encoder, Decoder, Next, Control};
struct Handle(Control);
impl Handler<HttpStream> for Handle {
fn on_request(&mut self, _request: Request) -> Next {
println!("on_request");
self.0.ready(Next::write()).expect("Control::ready failed");
Next::wait()
}
fn on_request_readable(&mut self, _decoder: &mut Decoder<HttpStream>) -> Next {
println!("on_request_readable");
Next::wait()
}
fn on_response(&mut self, _response: &mut Response) -> Next {
println!("on_response");
Next::write()
}
fn on_response_writable(&mut self, _encoder: &mut Encoder<HttpStream>) -> Next {
println!("on_response_writable");
Next::end()
}
}
fn main() {
Server::http(&"0.0.0.0:8080".parse().unwrap()).and_then(|s| s.handle(|control| Handle(control))).unwrap();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment