use super::journal_error::JournalError;
use crate::event::journal_record::JournalRecord;
use crate::event::JournalEvent;
use async_trait::async_trait;
#[async_trait]
pub trait JournalReader<T>: Send + Sync
where
T: JournalEvent,
{
async fn next(&mut self) -> Result<Option<JournalRecord<T::Payload>>, JournalError>;
fn position(&self) -> u64;
fn initial_prefix_complete(&self) -> Result<bool, JournalError> {
Err(JournalError::InitialPrefixUnsupported)
}
fn is_at_end(&self) -> bool {
false
}
}
pub mod observations;
pub use observations::{
JournalObservationReader, LocatedObservation, ObservationKey, ObservationLookup,
};