sos_core/events/
mod.rs

1//! Events represent changes to accounts, folders and files.
2//!
3//! Events may be appended to *event log* files for persistence.
4//!
5//! Event logs maintain an in-memory merkle tree of commits to
6//! enable syncing of data between devices.
7//!
8//! They are also used for some read events to maintain
9//! an audit trail of actions.
10
11mod account;
12mod device;
13mod event;
14mod event_kind;
15mod event_log;
16#[cfg(feature = "files")]
17mod file;
18pub mod patch;
19mod read;
20mod record;
21mod write;
22
23pub use account::AccountEvent;
24pub use device::DeviceEvent;
25pub use event::Event;
26pub use event_kind::EventKind;
27pub use event_log::EventLog;
28#[cfg(feature = "files")]
29pub use file::FileEvent;
30pub use read::ReadEvent;
31pub use record::EventRecord;
32pub use write::WriteEvent;
33
34/// Types of event logs.
35#[derive(Debug, Copy, Clone, PartialEq, Eq)]
36pub enum EventLogType {
37    /// Identity folder event log.
38    Identity,
39    /// Account event log.
40    Account,
41    /// Device event log.
42    Device,
43    /// Files event log.
44    #[cfg(feature = "files")]
45    Files,
46    /// Folder event log.
47    Folder(crate::VaultId),
48}
49
50/// Trait for events that can be written to an event log.
51pub trait LogEvent {
52    /// Get the event kind for this event.
53    fn event_kind(&self) -> EventKind;
54}