aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-10-27 07:29:38 -0400
committerJesse Luehrs <doy@tozt.net>2019-10-27 07:32:49 -0400
commite7cf81e813dd5ee0ba5af9d5ad4354351da95b2d (patch)
tree42c6f3167dfca53d19ed1f7b96091c19a6bc8d5e
parent4d7d1006b0daec59ea94b4ebfa7a5ebf1c316f31 (diff)
downloadttyrec-e7cf81e813dd5ee0ba5af9d5ad4354351da95b2d.tar.gz
ttyrec-e7cf81e813dd5ee0ba5af9d5ad4354351da95b2d.zip
split frame into frame and frame_at
keep the api easy to use while still letting it be testable
-rw-r--r--src/creator.rs10
-rw-r--r--src/writer.rs8
2 files changed, 13 insertions, 5 deletions
diff --git a/src/creator.rs b/src/creator.rs
index 666ffc7..fb228dd 100644
--- a/src/creator.rs
+++ b/src/creator.rs
@@ -8,7 +8,11 @@ impl Creator {
Default::default()
}
- pub fn frame(
+ pub fn frame(&mut self, data: &[u8]) -> crate::frame::Frame {
+ self.frame_at(std::time::Instant::now(), data)
+ }
+
+ pub fn frame_at(
&mut self,
cur_time: std::time::Instant,
data: &[u8],
@@ -42,12 +46,12 @@ mod test {
let base_time = std::time::Instant::now();
let zero_frame: Vec<u8> =
- std::convert::TryFrom::try_from(creator.frame(base_time, b""))
+ std::convert::TryFrom::try_from(creator.frame_at(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(
+ std::convert::TryFrom::try_from(creator.frame_at(
base_time + std::time::Duration::new(38, 123_456_000),
b"\x1b[2Jfoobar",
))
diff --git a/src/writer.rs b/src/writer.rs
index 680da3d..270acb0 100644
--- a/src/writer.rs
+++ b/src/writer.rs
@@ -15,12 +15,16 @@ impl<W: tokio::io::AsyncWrite> Writer<W> {
}
}
- pub fn frame(
+ pub fn frame(&mut self, data: &[u8]) -> crate::error::Result<()> {
+ self.frame_at(std::time::Instant::now(), data)
+ }
+
+ pub fn frame_at(
&mut self,
time: std::time::Instant,
data: &[u8],
) -> crate::error::Result<()> {
- let frame = self.creator.frame(time, data);
+ let frame = self.creator.frame_at(time, data);
let bytes: Vec<u8> = std::convert::TryFrom::try_from(frame)?;
self.to_write.extend(bytes.iter());
Ok(())