diff options
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 } + } +} |