From ab0cdc240c65fdc6b764ed17f6611786d449acc3 Mon Sep 17 00:00:00 2001 From: Eskil Queseth Date: Wed, 14 Oct 2020 17:45:04 +0200 Subject: add support for reconnecting to server --- mumd/src/main.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'mumd/src/main.rs') diff --git a/mumd/src/main.rs b/mumd/src/main.rs index 812e7a1..6d435fa 100644 --- a/mumd/src/main.rs +++ b/mumd/src/main.rs @@ -11,7 +11,6 @@ use argparse::ArgumentParser; use argparse::Store; use argparse::StoreTrue; use colored::*; -use tokio::sync::oneshot; use futures::join; use log::*; use mumble_protocol::control::ControlPacket; @@ -72,16 +71,12 @@ async fn main() { // Oneshot channel for setting UDP CryptState from control task // For simplicity we don't deal with re-syncing, real applications would have to. - let (crypt_state_sender, crypt_state_receiver) = oneshot::channel::(); + let (crypt_state_sender, crypt_state_receiver) = mpsc::channel::(1); // crypt state should always be consumed before sending a new one let (packet_sender, packet_receiver) = mpsc::unbounded_channel::>(); let (command_sender, command_receiver) = mpsc::unbounded_channel::(); let (command_response_sender, command_response_receiver) = mpsc::unbounded_channel::, ()>>(); let (connection_info_sender, connection_info_receiver) = watch::channel::>(None); - command_sender.send(Command::ChannelList).unwrap(); - command_sender.send(Command::ServerConnect{host: server_host, port: server_port, username: username.clone(), accept_invalid_cert}); - //command_sender.send(Command::ChannelJoin{channel_id: 1}).unwrap(); - command_sender.send(Command::ChannelList).unwrap(); let state = State::new(packet_sender, command_sender.clone(), connection_info_sender); let state = Arc::new(Mutex::new(state)); @@ -104,7 +99,8 @@ async fn main() { command_response_sender, ), send_commands( - command_sender + command_sender, + Command::ServerConnect{host: server_host, port: server_port, username: username.clone(), accept_invalid_cert} ), receive_command_responses( command_response_receiver, @@ -112,8 +108,13 @@ async fn main() { ); } -async fn send_commands(command_sender: mpsc::UnboundedSender) { - tokio::time::delay_for(Duration::from_secs(5)).await; +async fn send_commands(command_sender: mpsc::UnboundedSender, connect_command: Command) { + command_sender.send(connect_command.clone()); + tokio::time::delay_for(Duration::from_secs(2)).await; + command_sender.send(Command::ServerDisconnect); + tokio::time::delay_for(Duration::from_secs(2)).await; + command_sender.send(connect_command.clone()); + tokio::time::delay_for(Duration::from_secs(2)).await; command_sender.send(Command::ServerDisconnect); debug!("Finished sending commands"); -- cgit v1.2.1