aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-10-15 03:10:19 -0400
committerJesse Luehrs <doy@tozt.net>2019-10-15 03:10:19 -0400
commitf53196df8b150c8484b4cb59b876557758041073 (patch)
tree95de9d51b6e804b3900eef7c1e630b385a5202fe
parent9c905d3c7c28ce27a78d2b2bafa27983c7446383 (diff)
downloadteleterm-f53196df8b150c8484b4cb59b876557758041073.tar.gz
teleterm-f53196df8b150c8484b4cb59b876557758041073.zip
store term type and size data on the client
-rw-r--r--src/client.rs24
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!(),