diff options
Diffstat (limited to 'src/cmd')
-rw-r--r-- | src/cmd/play.rs | 11 | ||||
-rw-r--r-- | src/cmd/record.rs | 11 | ||||
-rw-r--r-- | src/cmd/server.rs | 13 | ||||
-rw-r--r-- | src/cmd/stream.rs | 18 | ||||
-rw-r--r-- | src/cmd/watch.rs | 18 |
5 files changed, 44 insertions, 27 deletions
diff --git a/src/cmd/play.rs b/src/cmd/play.rs index c99a697..22bd220 100644 --- a/src/cmd/play.rs +++ b/src/cmd/play.rs @@ -56,6 +56,7 @@ enum FileState { filename: String, }, Opening { + filename: String, fut: tokio::fs::file::OpenFuture<String>, }, Open { @@ -100,13 +101,17 @@ impl PlaySession { match &mut self.file { FileState::Closed { filename } => { self.file = FileState::Opening { + filename: filename.to_string(), fut: tokio::fs::File::open(filename.to_string()), }; Ok(crate::component_future::Async::DidWork) } - FileState::Opening { fut } => { - let file = - try_ready!(fut.poll().context(crate::error::OpenFile)); + FileState::Opening { filename, fut } => { + let file = try_ready!(fut.poll().with_context(|| { + crate::error::OpenFile { + filename: filename.to_string(), + } + })); let file = crate::ttyrec::File::new(file); self.file = FileState::Open { file }; Ok(crate::component_future::Async::DidWork) diff --git a/src/cmd/record.rs b/src/cmd/record.rs index 7481f92..4a1ab6e 100644 --- a/src/cmd/record.rs +++ b/src/cmd/record.rs @@ -97,6 +97,7 @@ enum FileState { filename: String, }, Opening { + filename: String, fut: tokio::fs::file::CreateFuture<String>, }, Open { @@ -166,13 +167,17 @@ impl RecordSession { match &mut self.file { FileState::Closed { filename } => { self.file = FileState::Opening { + filename: filename.to_string(), fut: tokio::fs::File::create(filename.to_string()), }; Ok(crate::component_future::Async::DidWork) } - FileState::Opening { fut } => { - let file = - try_ready!(fut.poll().context(crate::error::OpenFile)); + FileState::Opening { filename, fut } => { + let file = try_ready!(fut.poll().with_context(|| { + crate::error::OpenFile { + filename: filename.clone(), + } + })); let mut file = crate::ttyrec::File::new(file); file.write_frame(self.buffer.contents())?; self.file = FileState::Open { file }; diff --git a/src/cmd/server.rs b/src/cmd/server.rs index 134cb9d..f6fabfa 100644 --- a/src/cmd/server.rs +++ b/src/cmd/server.rs @@ -165,7 +165,7 @@ fn create_server( )> { let (mut sock_w, sock_r) = tokio::sync::mpsc::channel(100); let listener = tokio::net::TcpListener::bind(&address) - .context(crate::error::Bind)?; + .context(crate::error::Bind { address })?; let acceptor = listener .incoming() .context(crate::error::Acceptor) @@ -197,13 +197,16 @@ fn create_server_tls( )> { let (mut sock_w, sock_r) = tokio::sync::mpsc::channel(100); let listener = tokio::net::TcpListener::bind(&address) - .context(crate::error::Bind)?; + .context(crate::error::Bind { address })?; - let mut file = std::fs::File::open(tls_identity_file) - .context(crate::error::OpenIdentityFile)?; + let mut file = std::fs::File::open(tls_identity_file).context( + crate::error::OpenFileSync { + filename: tls_identity_file, + }, + )?; let mut identity = vec![]; file.read_to_end(&mut identity) - .context(crate::error::ReadIdentityFile)?; + .context(crate::error::ReadFileSync)?; let identity = native_tls::Identity::from_pkcs12(&identity, "") .context(crate::error::ParseIdentity)?; let acceptor = native_tls::TlsAcceptor::new(identity) diff --git a/src/cmd/stream.rs b/src/cmd/stream.rs index 95c1191..11634d3 100644 --- a/src/cmd/stream.rs +++ b/src/cmd/stream.rs @@ -95,13 +95,15 @@ impl crate::config::Config for Config { let connector = connector.clone(); let connector = tokio_tls::TlsConnector::from(connector); let stream = tokio::net::tcp::TcpStream::connect(&address); - Box::new(stream.context(crate::error::Connect).and_then( - move |stream| { - connector - .connect(&host, stream) - .context(crate::error::ConnectTls) - }, - )) + Box::new( + stream + .context(crate::error::Connect { address }) + .and_then(move |stream| { + connector + .connect(&host, stream) + .context(crate::error::ConnectTls { host }) + }), + ) }); Box::new(StreamSession::new( &self.command, @@ -114,7 +116,7 @@ impl crate::config::Config for Config { let connect: crate::client::Connector<_> = Box::new(move || { Box::new( tokio::net::tcp::TcpStream::connect(&address) - .context(crate::error::Connect), + .context(crate::error::Connect { address }), ) }); Box::new(StreamSession::new( diff --git a/src/cmd/watch.rs b/src/cmd/watch.rs index 853e5ea..4666abc 100644 --- a/src/cmd/watch.rs +++ b/src/cmd/watch.rs @@ -77,13 +77,15 @@ impl crate::config::Config for Config { let connector = tokio_tls::TlsConnector::from(connector); let stream = tokio::net::tcp::TcpStream::connect(&address); - Box::new(stream.context(crate::error::Connect).and_then( - move |stream| { - connector - .connect(&host, stream) - .context(crate::error::ConnectTls) - }, - )) + Box::new( + stream + .context(crate::error::Connect { address }) + .and_then(move |stream| { + connector.connect(&host, stream).context( + crate::error::ConnectTls { host }, + ) + }), + ) }) }); Box::new(WatchSession::new(make_connector, &auth)) @@ -94,7 +96,7 @@ impl crate::config::Config for Config { Box::new(move || { Box::new( tokio::net::tcp::TcpStream::connect(&address) - .context(crate::error::Connect), + .context(crate::error::Connect { address }), ) }) }); |