use std::ops::Deref;
use crate::{Body, Response, ResponseHeader, connection::Upgraded};
pub struct IncomingResponse<B = Body> {
inner: Response<B>,
upgraded: Option<Upgraded>,
}
impl<B> IncomingResponse<B> {
pub const fn new(response: Response<B>) -> Self {
Self {
inner: response,
upgraded: None,
}
}
#[inline]
pub fn body(self) -> B {
self.inner.body()
}
#[inline]
pub fn deconstruct(self) -> (ResponseHeader, B) {
self.inner.deconstruct()
}
#[inline]
pub fn upgrade(self) -> Option<Upgraded> {
self.upgraded
}
pub(crate) fn with_upgraded_connection(mut self, upgraded: Upgraded) -> Self {
self.upgraded = Some(upgraded);
self
}
}
impl<B> Deref for IncomingResponse<B> {
type Target = Response<B>;
#[inline]
fn deref(&self) -> &Self::Target {
&self.inner
}
}