aboutsummaryrefslogtreecommitdiffstats
path: root/src/creator.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/creator.rs')
-rw-r--r--src/creator.rs31
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 }
+ }
+}