Kinda get network working

This commit is contained in:
Michael Mikovsky
2025-08-12 22:24:00 -06:00
parent 8b2a596b9a
commit 856d7e467f
15 changed files with 3316 additions and 3219 deletions
+52
View File
@@ -0,0 +1,52 @@
use std::{
io::{BufReader, BufWriter, Read, Write},
net::TcpStream,
};
use syscall_lib::{ProgramMemory, Syscall};
use crate::syscall_exec;
pub struct Host {
stream: TcpStream,
reader: BufReader<TcpStream>,
writer: BufWriter<TcpStream>,
// memory: ProgramMemory,
}
impl Host {
pub fn new() -> Result<Host, std::io::Error> {
let stream = TcpStream::connect("localhost:1234")?;
let reader = BufReader::new(stream.try_clone()?);
let writer = BufWriter::new(stream.try_clone()?);
Ok(Host {
stream,
reader,
writer,
// memory: ProgramMemory::new(),
})
}
pub fn execute(&mut self, syscall: &Syscall) -> isize {
let bytes = syscall.encode();
self.writer
.write_all(&u32::to_be_bytes(bytes.len() as u32))
.unwrap();
self.writer.write_all(&bytes).unwrap();
self.writer.flush().unwrap();
println!("{:?} -> ", syscall);
// let response = syscall_exec::execute_syscall(syscall);
let mut response = [0u8; 8];
self.reader.read_exact(&mut response).unwrap();
let response = isize::from_be_bytes(response);
println!("{:?}", response);
response
}
}