1
0
mirror of https://github.com/fafhrd91/actix-web synced 2025-08-19 04:15:38 +02:00

Make payload and httprequest a stream

This commit is contained in:
Nikolay Kim
2018-02-25 11:21:45 +03:00
parent 4e41e13baf
commit 141b992450
5 changed files with 37 additions and 83 deletions

View File

@@ -15,7 +15,7 @@ use http::{header, Uri, Method, Version, HeaderMap, Extensions};
use info::ConnectionInfo;
use param::Params;
use router::Router;
use payload::{Payload, ReadAny};
use payload::Payload;
use json::JsonBody;
use multipart::Multipart;
use helpers::SharedHttpMessage;
@@ -604,6 +604,15 @@ impl<S> Clone for HttpRequest<S> {
}
}
impl<S> Stream for HttpRequest<S> {
type Item = Bytes;
type Error = PayloadError;
fn poll(&mut self) -> Poll<Option<Bytes>, PayloadError> {
self.payload_mut().poll()
}
}
impl<S> fmt::Debug for HttpRequest<S> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let res = write!(f, "\nHttpRequest {:?} {}:{}\n",
@@ -706,7 +715,7 @@ impl Future for UrlEncoded {
/// Future that resolves to a complete request body.
pub struct RequestBody {
pl: ReadAny,
pl: Payload,
body: BytesMut,
limit: usize,
req: Option<HttpRequest<()>>,
@@ -716,7 +725,7 @@ impl RequestBody {
/// Create `RequestBody` for request.
pub fn from_request<S>(req: &HttpRequest<S>) -> RequestBody {
let pl = req.payload().readany();
let pl = req.payload().clone();
RequestBody {
pl: pl,
body: BytesMut::new(),