if any of these sends fail the program should panic so unwrap is fine
This commit is contained in:
		
							parent
							
								
									e2ca266259
								
							
						
					
					
						commit
						ac0062260a
					
				| @ -149,7 +149,7 @@ where | |||||||
|     R: RecvServerPacket + std::fmt::Debug + Send + 'static, |     R: RecvServerPacket + std::fmt::Debug + Send + 'static, | ||||||
| { | { | ||||||
|     async_std::task::spawn(async move { |     async_std::task::spawn(async move { | ||||||
|         server_sender.send(ClientAction::NewClient(client_id, client_sender)).await; |         server_sender.send(ClientAction::NewClient(client_id, client_sender)).await.unwrap(); | ||||||
|         let mut pkt_receiver = PacketReceiver::new(socket, cipher); |         let mut pkt_receiver = PacketReceiver::new(socket, cipher); | ||||||
| 
 | 
 | ||||||
|         loop { |         loop { | ||||||
| @ -157,14 +157,14 @@ where | |||||||
|                 Ok(pkts) => { |                 Ok(pkts) => { | ||||||
|                     for pkt in pkts { |                     for pkt in pkts { | ||||||
|                         trace!("[recv from {:?}] {:?}", client_id, pkt); |                         trace!("[recv from {:?}] {:?}", client_id, pkt); | ||||||
|                         server_sender.send(ClientAction::Packet(client_id, pkt)).await; |                         server_sender.send(ClientAction::Packet(client_id, pkt)).await.unwrap(); | ||||||
|                     } |                     } | ||||||
|                 }, |                 }, | ||||||
|                 Err(err) => { |                 Err(err) => { | ||||||
|                     match err { |                     match err { | ||||||
|                         NetworkError::ClientDisconnected => { |                         NetworkError::ClientDisconnected => { | ||||||
|                             trace!("[client disconnected] {:?}", client_id); |                             trace!("[client disconnected] {:?}", client_id); | ||||||
|                             server_sender.send(ClientAction::Disconnect(client_id)).await; |                             server_sender.send(ClientAction::Disconnect(client_id)).await.unwrap(); | ||||||
|                             break; |                             break; | ||||||
|                         } |                         } | ||||||
|                         _ => { |                         _ => { | ||||||
| @ -229,10 +229,10 @@ fn state_client_loop<STATE, S, R, E>(state: Arc<Mutex<STATE>>, | |||||||
|                             for action in actions { |                             for action in actions { | ||||||
|                                 match action { |                                 match action { | ||||||
|                                     OnConnect::Cipher((inc, outc)) => { |                                     OnConnect::Cipher((inc, outc)) => { | ||||||
|                                         sender.send(ServerStateAction::Cipher(inc, outc)).await; |                                         sender.send(ServerStateAction::Cipher(inc, outc)).await.unwrap(); | ||||||
|                                     }, |                                     }, | ||||||
|                                     OnConnect::Packet(pkt) => { |                                     OnConnect::Packet(pkt) => { | ||||||
|                                         sender.send(ServerStateAction::Packet(pkt)).await; |                                         sender.send(ServerStateAction::Packet(pkt)).await.unwrap(); | ||||||
|                                     } |                                     } | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } | ||||||
| @ -249,7 +249,7 @@ fn state_client_loop<STATE, S, R, E>(state: Arc<Mutex<STATE>>, | |||||||
|                         Ok(pkts) => { |                         Ok(pkts) => { | ||||||
|                             for (client_id, pkt) in pkts { |                             for (client_id, pkt) in pkts { | ||||||
|                                 if let Some(client) = clients.get_mut(&client_id) { |                                 if let Some(client) = clients.get_mut(&client_id) { | ||||||
|                                     client.send(ServerStateAction::Packet(pkt)).await; |                                     client.send(ServerStateAction::Packet(pkt)).await.unwrap(); | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } | ||||||
|                         }, |                         }, | ||||||
| @ -264,12 +264,12 @@ fn state_client_loop<STATE, S, R, E>(state: Arc<Mutex<STATE>>, | |||||||
|                         Ok(pkts) => { |                         Ok(pkts) => { | ||||||
|                             for (client_id, pkt) in pkts { |                             for (client_id, pkt) in pkts { | ||||||
|                                 if let Some(client) = clients.get_mut(&client_id) { |                                 if let Some(client) = clients.get_mut(&client_id) { | ||||||
|                                     client.send(ServerStateAction::Packet(pkt)).await; |                                     client.send(ServerStateAction::Packet(pkt)).await.unwrap(); | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } | ||||||
| 
 | 
 | ||||||
|                             if let Some(client) = clients.get_mut(&client_id) { |                             if let Some(client) = clients.get_mut(&client_id) { | ||||||
|                                 client.send(ServerStateAction::Disconnect).await; |                                 client.send(ServerStateAction::Disconnect).await.unwrap(); | ||||||
|                             } |                             } | ||||||
|                         } |                         } | ||||||
|                         Err(err) => { |                         Err(err) => { | ||||||
|  | |||||||
| @ -79,7 +79,7 @@ where | |||||||
|                     ships.insert(server_id, ship_action_sender); |                     ships.insert(server_id, ship_action_sender); | ||||||
|                     for (server, action) in state.on_connect(server_id).await { |                     for (server, action) in state.on_connect(server_id).await { | ||||||
|                         if let Some(sender) = ships.get_mut(&server) { 
 |                         if let Some(sender) = ships.get_mut(&server) { 
 | ||||||
|                             sender.send(action).await; |                             sender.send(action).await.unwrap(); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                 }, |                 }, | ||||||
| @ -89,7 +89,7 @@ where | |||||||
|                         Ok(actions) => { |                         Ok(actions) => { | ||||||
|                             for (server, action) in actions{ |                             for (server, action) in actions{ | ||||||
|                                 if let Some(sender) = ships.get_mut(&server) { |                                 if let Some(sender) = ships.get_mut(&server) { | ||||||
|                                     sender.send(action).await; |                                     sender.send(action).await.unwrap(); | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } | ||||||
|                         }, |                         }, | ||||||
| @ -103,7 +103,7 @@ where | |||||||
|                     ships.remove(&server_id); |                     ships.remove(&server_id); | ||||||
|                     for (server, action) in actions { |                     for (server, action) in actions { | ||||||
|                         if let Some(sender) = ships.get_mut(&server) { |                         if let Some(sender) = ships.get_mut(&server) { | ||||||
|                             sender.send(action).await; |                             sender.send(action).await.unwrap(); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @ -121,7 +121,7 @@ where | |||||||
|     R: DeserializeOwned + std::fmt::Debug + Send + 'static, |     R: DeserializeOwned + std::fmt::Debug + Send + 'static, | ||||||
| { | { | ||||||
|     async_std::task::spawn(async move { |     async_std::task::spawn(async move { | ||||||
|         state_loop_sender.send(InterserverInputAction::NewConnection(server_id, output_loop_sender)).await; |         state_loop_sender.send(InterserverInputAction::NewConnection(server_id, output_loop_sender)).await.unwrap(); | ||||||
|         let mut msg_receiver = MessageReceiver::new(socket); |         let mut msg_receiver = MessageReceiver::new(socket); | ||||||
| 
 | 
 | ||||||
|         loop { |         loop { | ||||||
| @ -129,12 +129,12 @@ where | |||||||
|             match msg_receiver.recv().await { |             match msg_receiver.recv().await { | ||||||
|                 Ok(msg) => { |                 Ok(msg) => { | ||||||
|                     info!("[login recv loop msg] {:?}", msg); |                     info!("[login recv loop msg] {:?}", msg); | ||||||
|                     state_loop_sender.send(InterserverInputAction::Message(server_id, msg)).await; |                     state_loop_sender.send(InterserverInputAction::Message(server_id, msg)).await.unwrap(); | ||||||
|                 }, |                 }, | ||||||
|                 Err(err) => { |                 Err(err) => { | ||||||
|                     if let MessageReceiverError::Disconnected = err { |                     if let MessageReceiverError::Disconnected = err { | ||||||
|                         info!("[login recv loop disconnect] {:?}", server_id); |                         info!("[login recv loop disconnect] {:?}", server_id); | ||||||
|                         state_loop_sender.send(InterserverInputAction::Disconnect(server_id)).await; |                         state_loop_sender.send(InterserverInputAction::Disconnect(server_id)).await.unwrap(); | ||||||
|                         break; |                         break; | ||||||
|                     } |                     } | ||||||
|                     info!("[login recv loop err] {:?}", err); |                     info!("[login recv loop err] {:?}", err); | ||||||
| @ -200,7 +200,7 @@ pub fn login_listen_mainloop<EG: EntityGateway + 'static>(state: Arc<Mutex<Chara | |||||||
|                 let mut state = state.lock().await; |                 let mut state = state.lock().await; | ||||||
|                 let local_sender = client_sender.clone(); |                 let local_sender = client_sender.clone(); | ||||||
|                 state.set_sender(server_id, Box::new(move |message| { |                 state.set_sender(server_id, Box::new(move |message| { | ||||||
|                     async_std::task::block_on(local_sender.send(message)); |                     async_std::task::block_on(local_sender.send(message)).unwrap(); | ||||||
|                 })) |                 })) | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
| @ -236,7 +236,7 @@ pub fn ship_connect_mainloop<EG: EntityGateway + 'static>(state: Arc<Mutex<ShipS | |||||||
|                 let mut state = state.lock().await; |                 let mut state = state.lock().await; | ||||||
|                 let local_sender = client_sender.clone(); |                 let local_sender = client_sender.clone(); | ||||||
|                 state.set_sender(Box::new(move |message| { |                 state.set_sender(Box::new(move |message| { | ||||||
|                     async_std::task::block_on(local_sender.send(message)); |                     async_std::task::block_on(local_sender.send(message)).unwrap(); | ||||||
|                 })) |                 })) | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -164,7 +164,7 @@ impl<EG: EntityGateway> ServerState for LoginServerState<EG> { | |||||||
|         if let Some(username) = self.clients.remove(&id) { |         if let Some(username) = self.clients.remove(&id) { | ||||||
|             if let Ok(mut user) = self.entity_gateway.get_user_by_name(username).await { |             if let Ok(mut user) = self.entity_gateway.get_user_by_name(username).await { | ||||||
|                 user.at_login = false; |                 user.at_login = false; | ||||||
|                 self.entity_gateway.save_user(&user).await; |                 self.entity_gateway.save_user(&user).await?; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         Ok(Vec::new()) |         Ok(Vec::new()) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user