blob: d6768962760618f676fd732f9f1e384fa10dbf76 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
// These modules are "Server" modules. They're not necessary for the
// library, and we expect the library clients handle it as makes sense
// in their own processes.
pub mod configuration;
use configuration::Configuration;
use linea_caliente::handle_client;
use std::io::Result;
use std::net::TcpListener;
use std::thread;
/// Spawns a server and hands over connections to the hotline library.
fn main() -> Result<()> {
let configuration = Configuration::new();
let listener = TcpListener::bind(&configuration.address)?;
eprintln!(
"Linea Caliente listening on address {}.",
configuration.address
);
for stream in listener.incoming() {
match stream {
Ok(stream) => {
thread::spawn(move || {
if let Err(error) = handle_client(stream) {
eprintln!("Error handling client: {error}");
}
});
}
Err(error) => {
eprintln!("Connection failed: {error}");
}
}
}
Ok(())
}
|