#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
#![doc = include_str!("../README.md")]
pub mod memory;
pub mod protocol;
pub mod transport;
#[cfg(any(test, feature = "fuzz"))]
#[doc(hidden)]
pub use transport::mock;
pub use protocol::{ArkToHost, HostToArk};
pub use transport::{
Attestation, Attester, Client, Closer, DEFAULT_HANDSHAKE_TIMEOUT, DEFAULT_WRITE_TIMEOUT, Error,
MAX_FRAME_SIZE, MAX_MESSAGE_SIZE, Read, Roots, Sender, Server, Stream, Verifier, Write,
};
use std::fmt;
use std::sync::atomic::{AtomicU64, Ordering};
#[derive(Clone, Copy, Debug, Default)]
pub(crate) struct LogId(u64);
impl From<u64> for LogId {
fn from(id: u64) -> Self {
Self(id)
}
}
impl fmt::Display for LogId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0.fmt(f)
}
}
static SESSIONS: AtomicU64 = AtomicU64::new(0);
pub(crate) fn next_log_id() -> LogId {
LogId(SESSIONS.fetch_add(1, Ordering::Relaxed) + 1)
}
#[cfg(test)]
#[cfg_attr(coverage_nightly, coverage(off))]
mod testing;