aboutsummaryrefslogtreecommitdiff
path: root/karld/src/interface/tcp.rs
diff options
context:
space:
mode:
authormetamuffin <yvchraiqi@protonmail.com>2022-08-17 22:04:32 +0200
committermetamuffin <yvchraiqi@protonmail.com>2022-08-17 22:04:32 +0200
commit4cad1fc66422f84ade7ee29f86f5a43738c065f4 (patch)
tree815e44d69cc34d42669c866d043f7d09d3172290 /karld/src/interface/tcp.rs
parente87219d47764f82d073f464a23aa18a6f7d0c9d3 (diff)
downloadkarlender-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.rs24
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);
+ }
+ });
+ }
+}