handle error

This commit is contained in:
jake 2020-10-03 17:27:48 -06:00
parent 032b2921f0
commit cd1c30c8eb

View File

@ -139,27 +139,32 @@ where
} }
async fn interserver_send_loop<S>(server_id: ServerId, async fn interserver_send_loop<S>(server_id: ServerId,
mut socket: async_std::net::TcpStream, mut socket: async_std::net::TcpStream,
output_loop_receiver: async_std::sync::Receiver<S>) output_loop_receiver: async_std::sync::Receiver<S>)
where where
S: Serialize + std::fmt::Debug + Send + 'static, S: Serialize + std::fmt::Debug + Send + 'static,
{ {
async_std::task::spawn(async move { async_std::task::spawn(async move {
loop { loop {
info!("login send loop"); info!("login send loop");
let msg = output_loop_receiver.recv().await.unwrap(); match output_loop_receiver.recv().await {
Ok(msg) => {
let payload = serde_json::to_string(&msg);
if let Ok(payload) = payload {
let len_bytes = u32::to_le_bytes(payload.len() as u32);
let payload = serde_json::to_string(&msg); match socket.write_all(&len_bytes).await {
if let Ok(payload) = payload { Ok(_) => {},
let len_bytes = u32::to_le_bytes(payload.len() as u32); Err(err) => warn!("send failed: {:?}", err),
}
match socket.write_all(&len_bytes).await { match socket.write_all(&payload.as_bytes()).await {
Ok(_) => {}, Ok(_) => {},
Err(err) => warn!("send failed: {:?}", err), Err(err) => warn!("send failed: {:?}", err),
} }
match socket.write_all(&payload.as_bytes()).await { }
Ok(_) => {}, },
Err(err) => warn!("send failed: {:?}", err), Err(err) => {
warn!("error in send_loop: {:?}, {:?}", server_id, err)
} }
} }
} }
@ -179,7 +184,7 @@ pub fn login_listen_mainloop<EG: EntityGateway + 'static>(state: Arc<Mutex<Chara
loop { loop {
let (socket, addr) = listener.accept().await.unwrap(); let (socket, addr) = listener.accept().await.unwrap();
info!("new ship server: {:?} {:?}", socket, addr); info!("new ship server: {:?} {:?}", socket, addr);
id += 1; id += 1;
let server_id = crate::common::interserver::ServerId(id); let server_id = crate::common::interserver::ServerId(id);