diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-04-10 20:50:13 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-04-10 20:50:13 -0400 |
| commit | 1ef57107b1c355ef896327f0714344277df7ae18 (patch) | |
| tree | 9874d3d61f0bdb13913c6c4d079fbb82b336f656 /src/boot/mod.rs | |
| parent | 0fc3057b05dddb4eba142deeb6373ed37e312c60 (diff) | |
| parent | 1ee129176eb71f5e246462b66fd9c9862ed1ee7a (diff) | |
Use a heartbeat to allow the client to reconnect after network failures.
Diffstat (limited to 'src/boot/mod.rs')
| -rw-r--r-- | src/boot/mod.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/boot/mod.rs b/src/boot/mod.rs index c52b088..122bd53 100644 --- a/src/boot/mod.rs +++ b/src/boot/mod.rs @@ -1,14 +1,25 @@ +use crate::{channel::Channel, event::Sequence, message::Message, user::User}; +use serde::Serialize; +use std::time::Duration; + pub mod app; mod routes; -use crate::{channel::Channel, event::Sequence, message::Message, user::User}; - pub use self::routes::router; #[derive(serde::Serialize)] pub struct Snapshot { pub resume_point: Sequence, + #[serde(serialize_with = "as_seconds")] + pub heartbeat: Duration, pub users: Vec<User>, pub channels: Vec<Channel>, pub messages: Vec<Message>, } + +fn as_seconds<S>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error> +where + S: serde::Serializer, +{ + duration.as_secs().serialize(serializer) +} |
