use libc::c_int;
use sd_sys::journal as ffi;
use std::{ffi::{IntoStringError, NulError},
fmt,
str::Utf8Error};
#[derive(Debug, PartialEq, Eq)]
pub enum Error {
SDError(i32),
UTF8Error(Utf8Error),
NullError(NulError),
RangeError,
StringError(IntoStringError),
TimeStampOutOfRange,
UnexpectedDataFormat
}
#[derive(Debug, PartialEq, Eq)]
pub enum Level {
Emergency = ffi::LOG_EMERG as isize,
Alert = ffi::LOG_ALERT as isize,
Critical = ffi::LOG_CRIT as isize,
Error = ffi::LOG_ERR as isize,
Warning = ffi::LOG_WARNING as isize,
Notice = ffi::LOG_NOTICE as isize,
Info = ffi::LOG_INFO as isize,
Debug = ffi::LOG_DEBUG as isize
}
impl fmt::Display for Level {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{:?}", self)
}
}
impl Level {
pub fn as_raw_str(&self) -> &str {
match self {
Level::Emergency => "PRIORITY=0",
Level::Alert => "PRIORITY=1",
Level::Critical => "PRIORITY=2",
Level::Error => "PRIORITY=3",
Level::Warning => "PRIORITY=4",
Level::Notice => "PRIORITY=5",
Level::Info => "PRIORITY=6",
Level::Debug => "PRIORITY=7"
}
}
pub const fn as_value_str(&self) -> &str {
match self {
Level::Emergency => "0",
Level::Alert => "1",
Level::Critical => "2",
Level::Error => "3",
Level::Warning => "4",
Level::Notice => "5",
Level::Info => "6",
Level::Debug => "7"
}
}
}
#[derive(Debug, PartialEq, Eq)]
pub enum CursorMovement {
Done,
Limited(c_int),
EoF
}
#[derive(Debug, PartialEq, Eq)]
pub enum Enumeration<T> {
Value(T),
EoF
}
#[derive(Debug, PartialEq, Eq)]
pub enum FileFlags {
RuntimeOnly = ffi::SD_JOURNAL_RUNTIME_ONLY as isize,
LocalOnly = ffi::SD_JOURNAL_LOCAL_ONLY as isize,
LocalRuntimeOnly = (ffi::SD_JOURNAL_RUNTIME_ONLY | ffi::SD_JOURNAL_LOCAL_ONLY) as isize,
AllFiles = 0
}
#[derive(Debug, PartialEq, Eq)]
pub enum UserFlags {
SystemOnly = ffi::SD_JOURNAL_SYSTEM as isize,
CurrentUserOnly = ffi::SD_JOURNAL_CURRENT_USER as isize,
CurrentUserAndSystemOnly = (ffi::SD_JOURNAL_SYSTEM | ffi::SD_JOURNAL_CURRENT_USER) as isize,
AllUsers = 0
}
pub enum NamespaceFlags {
SelectedNamespaceOnly = 0,
DefaultNamespaceIncluded = ffi::SD_JOURNAL_INCLUDE_DEFAULT_NAMESPACE as isize
}
pub enum PathFlags {
FullPath = 0,
PathToOSRoot = ffi::SD_JOURNAL_OS_ROOT as isize
}
#[derive(Debug, PartialEq, Eq)]
pub enum Event {
NOOP,
Append,
Invalidate
}