add streaming body to requests and responses #3
2 changed files with 10 additions and 9 deletions
|
@ -1,5 +1,7 @@
|
|||
use std::collections::VecDeque;
|
||||
|
||||
use bytes::BytesMut;
|
||||
|
||||
pub use bytes::Bytes;
|
||||
|
||||
/// A circular buffer of bytes, internally represented as a list of Bytes
|
||||
|
@ -48,13 +50,13 @@ impl BytesBuf {
|
|||
self.buf_len = 0;
|
||||
self.buf.pop_back().unwrap()
|
||||
} else {
|
||||
let mut ret = Vec::with_capacity(self.buf_len);
|
||||
let mut ret = BytesMut::with_capacity(self.buf_len);
|
||||
for b in self.buf.iter() {
|
||||
ret.extend(&b[..]);
|
||||
ret.extend_from_slice(&b[..]);
|
||||
}
|
||||
self.buf.clear();
|
||||
self.buf_len = 0;
|
||||
Bytes::from(ret)
|
||||
ret.freeze()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -88,23 +90,23 @@ impl BytesBuf {
|
|||
self.buf_len -= len;
|
||||
front
|
||||
} else {
|
||||
let mut ret = Vec::with_capacity(len);
|
||||
ret.extend(&front[..]);
|
||||
let mut ret = BytesMut::with_capacity(len);
|
||||
ret.extend_from_slice(&front[..]);
|
||||
self.buf_len -= front.len();
|
||||
while ret.len() < len {
|
||||
let front = self.buf.pop_front().unwrap();
|
||||
if front.len() > len - ret.len() {
|
||||
let take = len - ret.len();
|
||||
ret.extend(front.slice(..take));
|
||||
ret.extend_from_slice(&front[..take]);
|
||||
self.buf.push_front(front.slice(take..));
|
||||
self.buf_len -= take;
|
||||
break;
|
||||
} else {
|
||||
ret.extend(&front[..]);
|
||||
ret.extend_from_slice(&front[..]);
|
||||
self.buf_len -= front.len();
|
||||
}
|
||||
}
|
||||
Bytes::from(ret)
|
||||
ret.freeze()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,6 @@ pub struct OrderTag(pub(crate) u64, pub(crate) u64);
|
|||
#[derive(Clone, Copy)]
|
||||
pub struct OrderTagStream(u64);
|
||||
|
||||
|
||||
impl OrderTag {
|
||||
/// Create a new stream from which to generate order tags. Example:
|
||||
/// ```
|
||||
|
|
Loading…
Reference in a new issue