use std::marker::PhantomData; use actix_codec::Framed; use actix_server_config::ServerConfig; use actix_service::{NewService, Service}; use futures::future::FutureResult; use futures::{Async, Poll}; use crate::error::Error; use crate::h1::Codec; use crate::request::Request; pub struct UpgradeHandler(PhantomData); impl NewService for UpgradeHandler { type Config = ServerConfig; type Request = (Request, Framed); type Response = (); type Error = Error; type Service = UpgradeHandler; type InitError = Error; type Future = FutureResult; fn new_service(&self, _: &ServerConfig) -> Self::Future { unimplemented!() } } impl Service for UpgradeHandler { type Request = (Request, Framed); type Response = (); type Error = Error; type Future = FutureResult; fn poll_ready(&mut self) -> Poll<(), Self::Error> { Ok(Async::Ready(())) } fn call(&mut self, _: Self::Request) -> Self::Future { unimplemented!() } }