Skip to content

Commit 183c4c7

Browse files
committed
IP networking
1 parent afa1941 commit 183c4c7

5 files changed

Lines changed: 20 additions & 38 deletions

File tree

elevator_1_state.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
0
2+
255

elevator_2_state.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
0
2+
255

src/elevio/system.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ pub fn start_reconnection_service(elevator_system: Arc<ElevatorSystem>) {
5454
if i as usize != elevator_id - 1 {
5555
let peer_message_port = 8878 + i;
5656
let peer_addr = format!("localhost:{}", peer_message_port);
57+
let peer_addr_2 = format!("localhost:{}", peer_message_port);
5758

5859
// Try to establish bidirectional connection
5960
elevator_system.establish_bidirectional_connection(&peer_addr);
61+
elevator_system.establish_bidirectional_connection(&peer_addr_2);
6062
}
6163
}
6264
}
@@ -181,7 +183,6 @@ impl ElevatorSystem {
181183
}
182184
},
183185
Err(e) => {
184-
// Don't spam with connection errors, just return false
185186
return false;
186187
}
187188
}

src/main.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
use std::sync::{Arc, Mutex};
22
use std::thread;
3-
use std::time::{SystemTime, Duration}; // Add SystemTime
3+
use std::time::{SystemTime, Duration};
44
use std::env;
5-
use std::io::Write; // Add Write for TcpStream operations
5+
use std::io::Write;
66
use crossbeam_channel as cbc;
77

88
use driver_rust::elevio;
99
use driver_rust::elevio::elev as e;
10-
use driver_rust::elevio::elev::Elevator;
1110
use driver_rust::network::p2p_connect;
1211
use driver_rust::elevio::fault_handler;
13-
use driver_rust::elevio::cost::ElevatorMessage; // Add this import
12+
use driver_rust::elevio::cost::ElevatorMessage;
1413
use driver_rust::elevio::system::{
1514
ElevatorSystem,
1615
start_reconnection_service,
@@ -83,8 +82,11 @@ fn main() -> std::io::Result<()> {
8382
// Try to connect to other potential elevators
8483
for i in 0..3 {
8584
if i != (elev_port - 15657) as usize {
86-
let peer_message_port = 8878 + i;
85+
let peer_message_port = 8878 ;
86+
//ip adresses are hardcoded for now
8787
let peer_addr = format!("localhost:{}", peer_message_port);
88+
89+
let peer_addr_2 = format!("localhost:{}", peer_message_port);
8890
let elevator_system_clone = Arc::clone(&elevator_system);
8991

9092
thread::spawn(move || {
@@ -95,12 +97,15 @@ fn main() -> std::io::Result<()> {
9597
Arc::clone(&elevator_system_clone.network_manager),
9698
&peer_addr
9799
);
98-
100+
p2p_connect::connect(
101+
Arc::clone(&elevator_system_clone.network_manager),
102+
&peer_addr_2
103+
);
99104
// 2) Add the peer to our local ElevatorSystem list (so we know about it)
100105
elevator_system_clone.add_peer(peer_addr.clone());
106+
elevator_system_clone.add_peer(peer_addr_2.clone());
101107

102-
// 3) Optionally send initial elevator state directly to that peer
103-
// (If you still want to replicate the original handshake logic)
108+
// 3) Send our initial state to the peer
104109
match std::net::TcpStream::connect(&peer_addr) {
105110
Ok(mut stream) => {
106111
println!("Connection to {} successful, sending initial state.", peer_addr);
@@ -115,7 +120,7 @@ fn main() -> std::io::Result<()> {
115120
stream.write_all(msg.to_string().as_bytes()).unwrap_or(());
116121
},
117122
Err(e) => {
118-
// println!("Failed to connect directly to peer at {}: {}", &peer_addr, e);
123+
println!("Failed to connect directly to peer at {}: {}", &peer_addr, e);
119124
}
120125
}
121126

src/network/p2p_connect.rs

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,6 @@ impl NetworkManager {
2727

2828
/// Üzenet küldése egy adott peernek
2929
/// Sending a message to a specific peer
30-
/*
31-
pub fn send_message(&self, addr: &str, message: &str) {
32-
if let Some(stream) = self.peers.lock().unwrap().get_mut(addr) {
33-
stream.write_all(message.as_bytes()).unwrap();
34-
}
35-
/*
36-
else {
37-
println!("Peer {} not found!", addr);
38-
} */
39-
}
40-
41-
/// Send a message to all connected peers
42-
pub fn broadcast_message(&self, message: &str) {
43-
let peers = self.peers.lock().unwrap();
44-
45-
for (addr, stream) in peers.iter() {
46-
match stream.try_clone() {
47-
Ok(mut stream) => {
48-
if let Err(e) = stream.write_all(message.as_bytes()) {
49-
println!("Failed to send to {}: {}", addr, e);
50-
}
51-
},
52-
Err(e) => println!("Failed to clone stream for {}: {}", addr, e),
53-
}
54-
}
55-
}
56-
*/
57-
5830
pub fn send_message(&self, addr: &str, message: &str) {
5931
let mut peers = self.peers.lock().unwrap_or_else(|e| e.into_inner());
6032
if let Some(stream) = peers.get_mut(addr) {

0 commit comments

Comments
 (0)