Skip to content

Commit da55829

Browse files
committed
rollback
1 parent cf51105 commit da55829

File tree

7 files changed

+77
-3
lines changed

7 files changed

+77
-3
lines changed

Client/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Client/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "Client"
2+
name = "client"
33
version = "0.1.0"
44
edition = "2021"
55

Client/src/libs/action.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
use serde::{Serialize, Deserialize};
2+
3+
#[derive(Debug, Serialize, Deserialize)]
4+
pub enum Action {
5+
Handshake,
6+
}
File renamed without changes.

Client/src/libs/p2p-client.rs

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
use std::net::{TcpListener, TcpStream};
2+
use std::io::{self, prelude::*, BufReader, Read, Write};
3+
use serde::{Serialize, Deserialize};
4+
5+
use crate::action::Action;
6+
7+
pub struct Client {
8+
tcp_listener: TcpListener,
9+
running: std::sync::atomic::AtomicBool,
10+
}
11+
12+
impl Default for Client {
13+
fn default() -> Self {
14+
let tcp_listener = TcpListener::bind("127.0.0.1:8888").unwrap();
15+
Server {
16+
tcp_listener,
17+
running: AtomicBool::new(true),
18+
}
19+
}
20+
}
21+
22+
impl Server {
23+
pub fn new(port: u16) -> Self {
24+
let tcp_listener = TcpListener::bind(format!("127.0.0.1:{}", port)).unwrap();
25+
Server {
26+
tcp_listener,
27+
running: AtomicBool::new(true),
28+
}
29+
}
30+
31+
pub fn start(&self) {
32+
for stream in listener.incoming() {
33+
let stream = stream.unwrap();
34+
handle_action(stream);
35+
}
36+
}
37+
38+
pub fn handle_action(mut stream: TcpStream) -> io::Result<()> {
39+
let buf_reader = BufReader::new(&mut stream);
40+
let mut buffer = Vec::new();
41+
42+
buf_reader.read_to_end($mut buffer)?;
43+
44+
let action: Action = serde_json::from_slice(&buffer)?;
45+
println!("Action from another client: {:?}", action);
46+
47+
Ok(())
48+
}
49+
50+
pub fn send_action(mut streamL TcpStream) -> io::Result<()> {
51+
let action = Action::Handshake;
52+
let serialized_action = serde_json::to_vec(&action)?;
53+
stream.write_all(&serialized_action)?;
54+
}
55+
56+
pub fn stop(&self) {
57+
// We set the flag and make a new connection to make sure that the server checks the flag
58+
self.running
59+
.store(false, std::sync::atomic::Ordering::Relaxed);
60+
TcpStream::connect(("127.0.0.1", self.port())).unwrap();
61+
62+
// TODO: close all streams using `shutdown`
63+
}
64+
65+
pub fn port(&self) -> u16 {
66+
self.tcp_listener.local_addr().unwrap().port()
67+
}
68+
}

Client/src/libs/p2p-server.rs

Whitespace-only changes.

Server/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "Server"
2+
name = "server"
33
version = "0.1.0"
44
edition = "2021"
55

0 commit comments

Comments
 (0)