diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-10-25 06:34:48 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-10-25 06:59:12 -0400 |
commit | 05cefcdf32b2d3dc9a2cf3f9b391bfda785bd801 (patch) | |
tree | 6fe31dc6961c4ef71da455d572a6663b816879a2 /src/creator.rs | |
parent | c8c0dbaba82bd53b7d311a7ba1fe97474e2f398e (diff) | |
download | ttyrec-05cefcdf32b2d3dc9a2cf3f9b391bfda785bd801.tar.gz ttyrec-05cefcdf32b2d3dc9a2cf3f9b391bfda785bd801.zip |
break it up into files
Diffstat (limited to 'src/creator.rs')
-rw-r--r-- | src/creator.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/creator.rs b/src/creator.rs new file mode 100644 index 0000000..bda3719 --- /dev/null +++ b/src/creator.rs @@ -0,0 +1,31 @@ +use std::convert::TryFrom as _; + +pub struct Creator { + base_time: Option<std::time::Instant>, +} + +impl Creator { + pub fn new() -> Self { + Default::default() + } + + pub fn frame(&mut self, data: &[u8]) -> crate::error::Result<Vec<u8>> { + let cur_time = std::time::Instant::now(); + 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 { + time: cur_time - *base_time, + data: data.to_vec(), + }) + } +} + +impl Default for Creator { + fn default() -> Self { + Self { base_time: None } + } +} |