use super::{WireframeApp, core::RebuildParams};
use crate::{
app::Packet,
codec::{FrameCodec, LengthDelimitedFrameCodec, clamp_frame_length},
serializer::Serializer,
};
impl<S, C, E, F> WireframeApp<S, C, E, F>
where
S: Serializer + Send + Sync,
C: Send + 'static,
E: Packet,
F: FrameCodec,
{
pub fn codec(&self) -> &F { &self.codec }
#[must_use]
pub fn with_codec<F2: FrameCodec>(mut self, codec: F2) -> WireframeApp<S, C, E, F2>
where
S: Default,
{
let serializer = std::mem::take(&mut self.serializer);
let message_assembler = self.message_assembler.take();
let memory_budgets = self.memory_budgets.take();
self.rebuild_with_params(RebuildParams {
serializer,
codec,
protocol: None,
fragmentation: None,
message_assembler,
memory_budgets,
})
}
#[must_use]
pub fn serializer<Ser>(mut self, serializer: Ser) -> WireframeApp<Ser, C, E, F>
where
Ser: Serializer + Send + Sync,
F: Default,
{
let codec = std::mem::take(&mut self.codec);
let protocol = self.protocol.take();
let fragmentation = self.fragmentation.take();
let message_assembler = self.message_assembler.take();
let memory_budgets = self.memory_budgets.take();
self.rebuild_with_params(RebuildParams {
serializer,
codec,
protocol,
fragmentation,
message_assembler,
memory_budgets,
})
}
}
impl<S, C, E> WireframeApp<S, C, E, LengthDelimitedFrameCodec>
where
S: Serializer + Send + Sync,
C: Send + 'static,
E: Packet,
{
#[must_use]
pub fn buffer_capacity(mut self, capacity: usize) -> Self {
let capacity = clamp_frame_length(capacity);
self.codec = LengthDelimitedFrameCodec::new(capacity);
self.fragmentation = None;
self
}
}