|
@@ -1,5 +1,7 @@
|
|
#![allow(unused)]
|
|
#![allow(unused)]
|
|
|
|
|
|
|
|
+use core::fmt;
|
|
|
|
+
|
|
use managed::{ManagedMap, ManagedSlice};
|
|
use managed::{ManagedMap, ManagedSlice};
|
|
|
|
|
|
use crate::storage::Assembler;
|
|
use crate::storage::Assembler;
|
|
@@ -26,6 +28,23 @@ enum AssemblerState {
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+impl fmt::Display for AssemblerState {
|
|
|
|
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
|
|
+ match self {
|
|
|
|
+ AssemblerState::NotInit => write!(f, "Not init")?,
|
|
|
|
+ AssemblerState::Assembling {
|
|
|
|
+ assembler,
|
|
|
|
+ total_size,
|
|
|
|
+ expires_at,
|
|
|
|
+ offset_correction,
|
|
|
|
+ } => {
|
|
|
|
+ write!(f, "{} expires at {}", assembler, expires_at)?;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ Ok(())
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
impl<'a> PacketAssembler<'a> {
|
|
impl<'a> PacketAssembler<'a> {
|
|
/// Create a new empty buffer for fragments.
|
|
/// Create a new empty buffer for fragments.
|
|
pub fn new<S>(storage: S) -> Self
|
|
pub fn new<S>(storage: S) -> Self
|
|
@@ -151,8 +170,16 @@ impl<'a> PacketAssembler<'a> {
|
|
let len = data.len();
|
|
let len = data.len();
|
|
self.buffer[offset..][..len].copy_from_slice(data);
|
|
self.buffer[offset..][..len].copy_from_slice(data);
|
|
|
|
|
|
|
|
+ net_debug!(
|
|
|
|
+ "frag assembler: receiving {} octests at offset {}",
|
|
|
|
+ len,
|
|
|
|
+ offset
|
|
|
|
+ );
|
|
|
|
+
|
|
match assembler.add(offset, data.len()) {
|
|
match assembler.add(offset, data.len()) {
|
|
Ok(overlap) => {
|
|
Ok(overlap) => {
|
|
|
|
+ net_debug!("assembler: {}", self.assembler);
|
|
|
|
+
|
|
if overlap {
|
|
if overlap {
|
|
net_debug!("packet was added, but there was an overlap.");
|
|
net_debug!("packet was added, but there was an overlap.");
|
|
}
|
|
}
|