diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-09-02 18:15:29 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-09-02 18:15:29 -0400 |
commit | 6ca82b84391f5f74e02cfb3a8c2aeae272505090 (patch) | |
tree | 533bac073071423006ff2ef0b61bd69d60a520be | |
parent | efed7b2908d404b2f0894cd78a7bda82bcf9a6ae (diff) | |
download | teleterm-6ca82b84391f5f74e02cfb3a8c2aeae272505090.tar.gz teleterm-6ca82b84391f5f74e02cfb3a8c2aeae272505090.zip |
respond to heartbeats
-rw-r--r-- | src/cmd/cast.rs | 15 | ||||
-rw-r--r-- | src/cmd/server.rs | 5 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/cmd/cast.rs b/src/cmd/cast.rs index c27483b..c4ed386 100644 --- a/src/cmd/cast.rs +++ b/src/cmd/cast.rs @@ -5,8 +5,14 @@ pub enum Error { #[snafu(display("failed to connect: {}", source))] Connect { source: std::io::Error }, + #[snafu(display("failed to read message: {}", source))] + Read { source: crate::protocol::Error }, + #[snafu(display("failed to write message: {}", source))] Write { source: crate::protocol::Error }, + + #[snafu(display("failed to read message: unexpected message received"))] + UnexpectedMessage, } pub type Result<T> = std::result::Result<T, Error>; @@ -29,5 +35,14 @@ fn run_impl() -> Result<()> { crate::protocol::Message::heartbeat() .write(&sock) .context(Write)?; + let res = crate::protocol::Message::read(&sock).context(Read)?; + match res { + crate::protocol::Message::Heartbeat => { + println!("received heartbeat response"); + } + _ => { + return Err(Error::UnexpectedMessage); + } + } } } diff --git a/src/cmd/server.rs b/src/cmd/server.rs index 218e5a0..d36ac57 100644 --- a/src/cmd/server.rs +++ b/src/cmd/server.rs @@ -377,7 +377,10 @@ impl ConnectionHandler { "got a heartbeat from {}", meta.username.as_ref().unwrap() ); - Ok(None) + let msg = crate::protocol::Message::heartbeat(); + Ok(Some(Box::new(move |s| { + Box::new(msg.write_async(s).context(WriteMessage)) + }))) } crate::protocol::Message::TerminalOutput { data } => { meta.saved_data.extend_from_slice(&data); |