1 use std::marker::PhantomData;
2 use std::task::{Context, Poll};
3 
4 use actix_codec::Framed;
5 use actix_service::{Service, ServiceFactory};
6 use futures_util::future::Ready;
7 
8 use crate::error::Error;
9 use crate::h1::Codec;
10 use crate::request::Request;
11 
12 pub struct UpgradeHandler<T>(PhantomData<T>);
13 
14 impl<T> ServiceFactory for UpgradeHandler<T> {
15     type Config = ();
16     type Request = (Request, Framed<T, Codec>);
17     type Response = ();
18     type Error = Error;
19     type Service = UpgradeHandler<T>;
20     type InitError = Error;
21     type Future = Ready<Result<Self::Service, Self::InitError>>;
22 
new_service(&self, _: ()) -> Self::Future23     fn new_service(&self, _: ()) -> Self::Future {
24         unimplemented!()
25     }
26 }
27 
28 impl<T> Service for UpgradeHandler<T> {
29     type Request = (Request, Framed<T, Codec>);
30     type Response = ();
31     type Error = Error;
32     type Future = Ready<Result<Self::Response, Self::Error>>;
33 
poll_ready(&mut self, _: &mut Context<'_>) -> Poll<Result<(), Self::Error>>34     fn poll_ready(&mut self, _: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
35         Poll::Ready(Ok(()))
36     }
37 
call(&mut self, _: Self::Request) -> Self::Future38     fn call(&mut self, _: Self::Request) -> Self::Future {
39         unimplemented!()
40     }
41 }
42