metrics_procession/
chunk.rs1use serde::{Deserialize, Serialize};
2use time::OffsetDateTime;
3
4use crate::event::Event;
5
6#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
9pub struct Chunk {
10 pub reference_time: OffsetDateTime,
12 pub events: Vec<Event>,
14}
15
16impl Chunk {
17 pub fn new(reference_time: OffsetDateTime) -> Self {
19 Self {
20 reference_time,
21 events: Default::default(),
22 }
23 }
24
25 pub fn push(&mut self, event: Event) {
27 self.events.push(event);
28 }
29
30 pub fn memory_size(&self) -> usize {
32 use std::mem::size_of;
33 size_of::<Self>() + (self.events.len() * (size_of::<Event>()))
34 }
35}
36
37impl Default for Chunk {
39 fn default() -> Self {
40 Self::new(OffsetDateTime::now_utc())
41 }
42}