pub fn push<B: Into<E>>(&mut self, b: B) {
self.push_(b.into());
}
- pub fn push_(&mut self, b: E) {
+ fn push_(&mut self, b: E) {
let l = b.as_ref().len();
self.queue.push_back(b);
self.content += l;
}
impl FrameQueueBuf {
- pub fn push<B: Into<Box<[u8]>>>(&mut self, b: B) {
- self.push_(b.into());
+ pub fn push_esc<B: Into<Box<[u8]>>>(&mut self, b: B) {
+ self.push_esc_(b.into());
}
- pub fn push_(&mut self, b: Box<[u8]>) {
+ fn push_esc_(&mut self, b: Box<[u8]>) {
self.queue.push_(Cervine::Owned(b));
self.queue.push_(Cervine::Borrowed(&SLIP_END_SLICE));
}
+ pub fn esc_push(&mut self, b: Box<[u8]>) {
+ self.queue.push_(Cervine::Borrowed(&SLIP_END_SLICE));
+ self.queue.push_(Cervine::Owned(b));
+ }
+ pub fn push_raw(&mut self, b: Box<[u8]>) {
+ self.queue.push_(Cervine::Owned(b));
+ }
pub fn is_empty(&self) -> bool { self.queue.is_empty() }
pub fn len(&self) -> usize { self.queue.len() }
}
-impl<E> Extend<E> for FrameQueueBuf where E: Into<Box<[u8]>> {
- fn extend<I>(&mut self, it: I)
- where I: IntoIterator<Item=E>
- {
- for b in it { self.push(b) }
- }
-}
-
impl<E> hyper::body::Buf for QueueBuf<E> where E: AsRef<[u8]> {
fn remaining(&self) -> usize { self.content }
fn chunk(&self) -> &[u8] {
pub fn display<S:Display>(s: S) -> Self {
let s = s.to_string().into_bytes();
let mut buf: FrameQueueBuf = default();
- buf.push(s);
+ buf.push_raw(s.into());
Self::new(buf)
}
}