First commit of 0.5.* branch.

This commit is contained in:
Revertron
2021-05-02 12:55:51 +02:00
parent 8bb2d9af9f
commit 9949d13e62
19 changed files with 202 additions and 422 deletions
+26 -35
View File
@@ -169,14 +169,6 @@ impl VectorPacketBuffer {
}
impl PacketBuffer for VectorPacketBuffer {
fn find_label(&self, label: &str) -> Option<usize> {
self.label_lookup.get(label).cloned()
}
fn save_label(&mut self, label: &str, pos: usize) {
self.label_lookup.insert(label.to_string(), pos);
}
fn read(&mut self) -> Result<u8> {
let res = self.buffer[self.pos];
self.pos += 1;
@@ -220,42 +212,33 @@ impl PacketBuffer for VectorPacketBuffer {
Ok(())
}
fn find_label(&self, label: &str) -> Option<usize> {
self.label_lookup.get(label).cloned()
}
fn save_label(&mut self, label: &str, pos: usize) {
self.label_lookup.insert(label.to_string(), pos);
}
}
pub struct StreamPacketBuffer<'a, T>
where
T: Read,
{
pub struct StreamPacketBuffer<'a, T> where T: Read {
pub stream: &'a mut T,
pub buffer: Vec<u8>,
pub pos: usize,
}
impl<'a, T> StreamPacketBuffer<'a, T>
where
T: Read + 'a,
{
impl<'a, T> StreamPacketBuffer<'a, T> where T: Read + 'a {
pub fn new(stream: &'a mut T) -> StreamPacketBuffer<'_, T> {
StreamPacketBuffer {
stream: stream,
stream,
buffer: Vec::new(),
pos: 0,
}
}
}
impl<'a, T> PacketBuffer for StreamPacketBuffer<'a, T>
where
T: Read + 'a,
{
fn find_label(&self, _: &str) -> Option<usize> {
None
}
fn save_label(&mut self, _: &str, _: usize) {
unimplemented!();
}
impl<'a, T> PacketBuffer for StreamPacketBuffer<'a, T> where T: Read + 'a {
fn read(&mut self) -> Result<u8> {
while self.pos >= self.buffer.len() {
let mut local_buffer = [0; 1];
@@ -310,6 +293,14 @@ where
self.pos += steps;
Ok(())
}
fn find_label(&self, _: &str) -> Option<usize> {
None
}
fn save_label(&mut self, _: &str, _: usize) {
unimplemented!();
}
}
pub struct BytePacketBuffer {
@@ -333,12 +324,6 @@ impl Default for BytePacketBuffer {
}
impl PacketBuffer for BytePacketBuffer {
fn find_label(&self, _: &str) -> Option<usize> {
None
}
fn save_label(&mut self, _: &str, _: usize) {}
fn read(&mut self) -> Result<u8> {
if self.pos >= 512 {
return Err(BufferError::EndOfBuffer);
@@ -393,6 +378,12 @@ impl PacketBuffer for BytePacketBuffer {
Ok(())
}
fn find_label(&self, _: &str) -> Option<usize> {
None
}
fn save_label(&mut self, _: &str, _: usize) {}
}
#[cfg(test)]