rill_view/flow/control/
click.rs

1use rill_protocol::flow::core::{Flow, TimedEvent};
2use rill_protocol::io::provider::{StreamType, Timestamp};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct ClickState {
7    pub caption: String,
8    pub last_click: Option<Timestamp>,
9}
10
11impl ClickState {
12    pub fn new(caption: String) -> Self {
13        Self {
14            caption,
15            last_click: None,
16        }
17    }
18}
19
20impl Flow for ClickState {
21    type Action = ClickAction;
22    type Event = ClickEvent;
23
24    fn stream_type() -> StreamType {
25        StreamType::from("rillrate.flow.control.click.v0")
26    }
27
28    fn apply(&mut self, event: TimedEvent<Self::Event>) {
29        self.last_click = Some(event.timestamp);
30    }
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct ClickAction;
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct ClickEvent;