diff options
author | metamuffin <yvchraiqi@protonmail.com> | 2022-08-17 22:04:32 +0200 |
---|---|---|
committer | metamuffin <yvchraiqi@protonmail.com> | 2022-08-17 22:04:32 +0200 |
commit | 4cad1fc66422f84ade7ee29f86f5a43738c065f4 (patch) | |
tree | 815e44d69cc34d42669c866d043f7d09d3172290 /karld/src/interface/tcp.rs | |
parent | e87219d47764f82d073f464a23aa18a6f7d0c9d3 (diff) | |
download | karlender-4cad1fc66422f84ade7ee29f86f5a43738c065f4.tar karlender-4cad1fc66422f84ade7ee29f86f5a43738c065f4.tar.bz2 karlender-4cad1fc66422f84ade7ee29f86f5a43738c065f4.tar.zst |
add more interfaces
Diffstat (limited to 'karld/src/interface/tcp.rs')
-rw-r--r-- | karld/src/interface/tcp.rs | 24 |
1 files changed, 24 insertions, 0 deletions
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); + } + }); + } +} |