rill_view/flow/control/
click.rs1use 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;