mirror of https://github.com/Trivernis/bromine.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
668 B
Rust
24 lines
668 B
Rust
use std::sync::atomic::{AtomicU64, Ordering};
|
|
use std::sync::Arc;
|
|
use std::time::{SystemTime, UNIX_EPOCH};
|
|
|
|
pub mod error_event;
|
|
pub mod event;
|
|
pub mod event_handler;
|
|
pub mod payload;
|
|
|
|
#[cfg(feature = "serialize")]
|
|
pub mod payload_serializer;
|
|
|
|
/// Generates a new event id
|
|
pub(crate) fn generate_event_id() -> u64 {
|
|
lazy_static::lazy_static! {
|
|
static ref COUNTER: Arc<AtomicU64> = Arc::new(AtomicU64::new(0));
|
|
}
|
|
let epoch_elapsed = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
|
|
|
|
(epoch_elapsed.as_secs() % u16::MAX as u64) << 48
|
|
| (epoch_elapsed.subsec_millis() as u64) << 32
|
|
| COUNTER.fetch_add(1, Ordering::SeqCst)
|
|
}
|