aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-10-27 06:35:23 -0400
committerJesse Luehrs <doy@tozt.net>2019-10-27 06:35:23 -0400
commit4d7d1006b0daec59ea94b4ebfa7a5ebf1c316f31 (patch)
treeee51e7aa0fb6aa7598c5c739473a398ba3e512ca
parenta5e7c90d0af6a0b6080f17df2910f69ef114b210 (diff)
downloadttyrec-4d7d1006b0daec59ea94b4ebfa7a5ebf1c316f31.tar.gz
ttyrec-4d7d1006b0daec59ea94b4ebfa7a5ebf1c316f31.zip
creator should just return the frame
can convert the frame to bytes separately
-rw-r--r--src/creator.rs31
-rw-r--r--src/writer.rs3
2 files changed, 18 insertions, 16 deletions
diff --git a/src/creator.rs b/src/creator.rs
index 3966470..666ffc7 100644
--- a/src/creator.rs
+++ b/src/creator.rs
@@ -1,5 +1,3 @@
-use std::convert::TryFrom as _;
-
#[derive(Debug, Clone)]
pub struct Creator {
base_time: Option<std::time::Instant>,
@@ -14,17 +12,17 @@ impl Creator {
&mut self,
cur_time: std::time::Instant,
data: &[u8],
- ) -> crate::error::Result<Vec<u8>> {
+ ) -> crate::frame::Frame {
let base_time = if let Some(base_time) = &self.base_time {
base_time
} else {
self.base_time = Some(cur_time);
self.base_time.as_ref().unwrap()
};
- Vec::<u8>::try_from(crate::frame::Frame {
+ crate::frame::Frame {
time: cur_time - *base_time,
data: data.to_vec(),
- })
+ }
}
}
@@ -42,17 +40,20 @@ mod test {
fn test_basic() {
let mut creator = Creator::new();
let base_time = std::time::Instant::now();
+
+ let zero_frame: Vec<u8> =
+ std::convert::TryFrom::try_from(creator.frame(base_time, b""))
+ .unwrap();
+ assert_eq!(zero_frame, vec![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
+
+ let data_frame: Vec<u8> =
+ std::convert::TryFrom::try_from(creator.frame(
+ base_time + std::time::Duration::new(38, 123_456_000),
+ b"\x1b[2Jfoobar",
+ ))
+ .unwrap();
assert_eq!(
- creator.frame(base_time, b"").unwrap(),
- vec![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- );
- assert_eq!(
- creator
- .frame(
- base_time + std::time::Duration::new(38, 123_456_000),
- b"\x1b[2Jfoobar"
- )
- .unwrap(),
+ data_frame,
vec![
38, 0, 0, 0, 64, 226, 1, 0, 10, 0, 0, 0, 27, 91, 50, 74, 102,
111, 111, 98, 97, 114,
diff --git a/src/writer.rs b/src/writer.rs
index 1717032..680da3d 100644
--- a/src/writer.rs
+++ b/src/writer.rs
@@ -20,7 +20,8 @@ impl<W: tokio::io::AsyncWrite> Writer<W> {
time: std::time::Instant,
data: &[u8],
) -> crate::error::Result<()> {
- let bytes = self.creator.frame(time, data)?;
+ let frame = self.creator.frame(time, data);
+ let bytes: Vec<u8> = std::convert::TryFrom::try_from(frame)?;
self.to_write.extend(bytes.iter());
Ok(())
}