diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-10-15 03:10:19 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-10-15 03:10:19 -0400 |
commit | f53196df8b150c8484b4cb59b876557758041073 (patch) | |
tree | 95de9d51b6e804b3900eef7c1e630b385a5202fe | |
parent | 9c905d3c7c28ce27a78d2b2bafa27983c7446383 (diff) | |
download | teleterm-f53196df8b150c8484b4cb59b876557758041073.tar.gz teleterm-f53196df8b150c8484b4cb59b876557758041073.zip |
store term type and size data on the client
-rw-r--r-- | src/client.rs | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/client.rs b/src/client.rs index 0fc1467..605b68d 100644 --- a/src/client.rs +++ b/src/client.rs @@ -73,6 +73,9 @@ pub struct Client< username: String, buffer_size: usize, + term_type: String, + size: Option<crate::term::Size>, + heartbeat_timer: tokio::timer::Interval, reconnect_timer: Option<tokio::timer::Delay>, reconnect_backoff_amount: std::time::Duration, @@ -135,6 +138,8 @@ impl<S: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + 'static> on_connect: &[crate::protocol::Message], handle_sigwinch: bool, ) -> Self { + let term_type = + std::env::var("TERM").unwrap_or_else(|_| "".to_string()); let heartbeat_timer = tokio::timer::Interval::new_interval(HEARTBEAT_DURATION); let winches: Option< @@ -156,6 +161,9 @@ impl<S: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + 'static> username: username.to_string(), buffer_size, + term_type, + size: None, + heartbeat_timer, reconnect_timer: None, reconnect_backoff_amount: RECONNECT_BACKOFF_BASE, @@ -275,13 +283,11 @@ impl<S: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + 'static> self.to_send.clear(); - let term = std::env::var("TERM") - .unwrap_or_else(|_| "".to_string()); - let size = crate::term::Size::get()?; + self.size = Some(crate::term::Size::get()?); let msg = crate::protocol::Message::login_plain( &self.username, - &term, - &size, + &self.term_type, + self.size.as_ref().unwrap(), ); self.to_send.push_back(msg); @@ -292,7 +298,7 @@ impl<S: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + 'static> self.reset_reconnect_timer(); Ok(crate::component_future::Poll::Event(Event::Connect( - size, + self.size.clone().unwrap(), ))) } Ok(futures::Async::NotReady) => { @@ -422,12 +428,12 @@ impl<S: tokio::io::AsyncRead + tokio::io::AsyncWrite + Send + 'static> if let Some(winches) = &mut self.winches { match winches.poll()? { futures::Async::Ready(Some(_)) => { - let size = crate::term::Size::get()?; + self.size = Some(crate::term::Size::get()?); self.send_message(crate::protocol::Message::resize( - &size, + self.size.as_ref().unwrap(), )); Ok(crate::component_future::Poll::Event(Event::Resize( - size, + self.size.clone().unwrap(), ))) } futures::Async::Ready(None) => unreachable!(), |