1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pub use failure::Error;

pub struct StreamOpts {
    pub lt: String,
    pub gt: String,
    pub reverse: bool,
    pub live: bool,
    pub limit: usize,
}

#[derive(Debug, Fail)]
pub enum FlumeLogError {
    #[fail(display = "Unable to find sequence: {}", sequence)]
    SequenceNotFound { sequence: u64 },
}

pub type Sequence = u64;

pub trait FlumeLog {
    fn get(&self, seq: Sequence) -> Result<Vec<u8>, Error>;
    fn clear(&mut self, seq: Sequence);
    fn latest(&self) -> Option<Sequence>;
    fn append(&mut self, buff: &[u8]) -> Result<Sequence, Error>;
}