+1
src/main.rs
+1
src/main.rs
+38
src/network.rs
+38
src/network.rs
···
1
+
use std::net::{SocketAddr, TcpListener, TcpStream};
2
+
3
+
pub enum NetworkError {
4
+
IO(std::io::Error),
5
+
NoIncomingConnexionError,
6
+
}
7
+
8
+
impl From<std::io::Error> for NetworkError {
9
+
fn from(value: std::io::Error) -> Self {
10
+
NetworkError::IO(value)
11
+
}
12
+
}
13
+
14
+
struct TcpPlayer {
15
+
connexion_stream: TcpStream,
16
+
}
17
+
18
+
impl TcpPlayer {
19
+
pub fn host(addr: SocketAddr) -> Result<TcpPlayer, NetworkError> {
20
+
let listener = TcpListener::bind(addr)?;
21
+
let mut streams = listener.incoming();
22
+
let stream = streams
23
+
.next()
24
+
.ok_or(NetworkError::NoIncomingConnexionError)??;
25
+
26
+
Ok(TcpPlayer {
27
+
connexion_stream: stream,
28
+
})
29
+
}
30
+
31
+
pub fn join(addr: SocketAddr) -> Result<TcpPlayer, NetworkError> {
32
+
let stream = TcpStream::connect(addr)?;
33
+
34
+
Ok(TcpPlayer {
35
+
connexion_stream: stream,
36
+
})
37
+
}
38
+
}
+1
-1
src/parser.rs
+1
-1
src/parser.rs