Reformat, add syscall streaming

This commit is contained in:
Michael Mikovsky
2025-08-12 16:55:34 -06:00
parent 1ed6ff2d9a
commit 7bf1ef9419
49 changed files with 3606 additions and 105 deletions
@@ -0,0 +1,76 @@
use crate::{
Error,
layers::{Base64Layer, HandshakeLayer, LayerConfig},
networkers::{Connection, ProtocolLayer},
};
impl Connection for Box<dyn Connection + Send + Sync> {
fn get_info(&self) -> String {
(**self).get_info()
}
fn is_alive(&self) -> bool {
(**self).is_alive()
}
fn read(&mut self) -> Result<Vec<u8>, Error> {
(**self).read()
}
fn write(&mut self, data: &[u8]) -> Result<(), Error> {
(**self).write(data)
}
fn try_clone(&self) -> Result<Box<dyn Connection + Send + Sync>, Error> {
Ok(Box::new((**self).try_clone()?))
}
}
pub fn build_client<C>(
base_conn: C,
layers: Vec<LayerConfig>,
) -> Result<Box<dyn Connection + Send>, Error>
where
C: Connection + 'static,
{
let mut current_conn: Box<dyn Connection + Send> = Box::new(base_conn);
for layer_config in &layers {
current_conn = match layer_config {
LayerConfig::Base64 => Box::new(Base64Layer::new(current_conn)?),
LayerConfig::Handshake => {
let mut handshake_layer = HandshakeLayer::new(current_conn)?;
handshake_layer.initialize_client()?;
Box::new(handshake_layer)
}
};
}
Ok(current_conn)
}
pub fn create_server_builder<C>(
layers: Vec<LayerConfig>,
) -> Result<Box<dyn Fn(C) -> Result<Box<dyn Connection + Send>, Error>>, Error>
where
C: Connection + 'static,
{
Ok(Box::new(
move |base_conn: C| -> Result<Box<dyn Connection + Send>, Error> {
let mut current_conn: Box<dyn Connection + Send> = Box::new(base_conn);
for layer_config in &layers {
current_conn = match layer_config {
LayerConfig::Base64 => Box::new(Base64Layer::new(current_conn)?),
LayerConfig::Handshake => {
let mut handshake_layer = HandshakeLayer::new(current_conn)?;
handshake_layer.initialize_server()?;
Box::new(handshake_layer)
}
};
}
Ok(current_conn)
},
))
}