working on tcp monad

master
Andrew Johnson 6 years ago
parent dbdebebab2
commit 6b13c69293

@ -1,4 +1,31 @@
use std::fmt::{Debug};
use std::io::prelude::*;
use std::net::TcpListener;
use std::net::TcpStream;
use std::thread;
struct ServerMonad<St> {
state: St,
handle: Box<Fn(&mut St,String) -> bool>
}
impl<St: Clone> ServerMonad<St> {
fn _return(&self, st: St) -> ServerMonad<St> {
ServerMonad {
state: st,
handle: Box::new(|st: &mut St, s| false)
}
}
fn listen(&self, address: &str) {
let listener = TcpListener::bind(address).unwrap();
for stream in listener.incoming() {
let mut st = self.state.clone();
let mut buffer = String::new();
stream.unwrap().read_to_string(&mut buffer);
(self.handle)(&mut st,buffer);
}
}
}
struct LogMonad<T>(T);
impl<T> LogMonad<T> {

Loading…
Cancel
Save