From 4cad1fc66422f84ade7ee29f86f5a43738c065f4 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 17 Aug 2022 22:04:32 +0200 Subject: add more interfaces --- karld/src/interface/tcp.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 karld/src/interface/tcp.rs (limited to 'karld/src/interface/tcp.rs') diff --git a/karld/src/interface/tcp.rs b/karld/src/interface/tcp.rs new file mode 100644 index 0000000..2225f4a --- /dev/null +++ b/karld/src/interface/tcp.rs @@ -0,0 +1,24 @@ +use crate::interface::generic::generic_handle_connection; +use crate::CLIENT_ID_COUNTER; +use karlcommon::interfaces::tcp_addr; +use log::{info, warn}; +use std::net::TcpListener; +use std::thread; + +pub fn run() { + let listener = TcpListener::bind(tcp_addr()).unwrap(); + info!("listening."); + + loop { + let (stream, addr) = listener.accept().unwrap(); + let id = CLIENT_ID_COUNTER.fetch_add(1, std::sync::atomic::Ordering::Relaxed); + thread::spawn(move || { + info!("client connected: {:?}", addr); + if let Err(err) = generic_handle_connection(id, stream.try_clone().unwrap(), stream) { + warn!("client dropped: {:?} ({})", addr, err); + } else { + info!("client dropped: {:?}", addr); + } + }); + } +} -- cgit v1.2.3-70-g09d2