diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-22 11:15:45 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-22 11:15:45 -0500 |
commit | 5dfabf794891afd558182faeda9023ad3cd29413 (patch) | |
tree | 7ba365258fea2970f6d2659956c02a15d7b4529a /teleterm-web | |
parent | 365988f9df0c9f1c7d1e297012351efbc1bce8b4 (diff) | |
download | teleterm-5dfabf794891afd558182faeda9023ad3cd29413.tar.gz teleterm-5dfabf794891afd558182faeda9023ad3cd29413.zip |
handle streamer disconnects
Diffstat (limited to 'teleterm-web')
-rw-r--r-- | teleterm-web/src/lib.rs | 4 | ||||
-rw-r--r-- | teleterm-web/src/model.rs | 4 | ||||
-rw-r--r-- | teleterm-web/src/protocol.rs | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs index 118ab2f..2ff1514 100644 --- a/teleterm-web/src/lib.rs +++ b/teleterm-web/src/lib.rs @@ -62,6 +62,10 @@ fn update( crate::protocol::Message::TerminalOutput { data } => { model.process(&data); } + crate::protocol::Message::Disconnected => { + model.disconnect_watch(); + orders.perform_cmd(model.list()); + } } } ws::WebSocketEvent::Error(e) => { diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index f83036b..dfaccc8 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -60,6 +60,10 @@ impl Model { self.watch_conn.is_some() } + pub fn disconnect_watch(&mut self) { + self.watch_conn = None; + } + pub fn process(&mut self, bytes: &[u8]) { if let Some(conn) = &mut self.watch_conn { conn.term.process(bytes); diff --git a/teleterm-web/src/protocol.rs b/teleterm-web/src/protocol.rs index d9f3a8e..af40891 100644 --- a/teleterm-web/src/protocol.rs +++ b/teleterm-web/src/protocol.rs @@ -4,4 +4,5 @@ #[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize)] pub enum Message { TerminalOutput { data: Vec<u8> }, + Disconnected, } |