2016-05-28 21:45:27 +00:00
|
|
|
use std::fmt::Debug;
|
|
|
|
|
2016-03-04 15:43:01 +00:00
|
|
|
use hook::result::HookResult;
|
|
|
|
use store::FileLockEntry;
|
2016-03-04 15:48:03 +00:00
|
|
|
use storeid::StoreId;
|
|
|
|
|
2016-07-16 14:17:04 +00:00
|
|
|
pub trait StoreIdAccessor : Debug + Send {
|
2016-03-04 15:48:03 +00:00
|
|
|
fn access(&self, &StoreId) -> HookResult<()>;
|
|
|
|
}
|
2016-03-04 15:43:01 +00:00
|
|
|
|
2016-07-16 14:17:04 +00:00
|
|
|
pub trait MutableHookDataAccessor : Debug + Send {
|
2016-03-04 15:43:01 +00:00
|
|
|
fn access_mut(&self, &mut FileLockEntry) -> HookResult<()>;
|
|
|
|
}
|
|
|
|
|
2016-07-16 14:17:04 +00:00
|
|
|
pub trait NonMutableHookDataAccessor : Debug + Send {
|
2016-03-04 15:43:01 +00:00
|
|
|
fn access(&self, &FileLockEntry) -> HookResult<()>;
|
|
|
|
}
|
|
|
|
|
2016-05-28 21:45:27 +00:00
|
|
|
#[derive(Debug)]
|
2016-03-04 20:18:04 +00:00
|
|
|
pub enum HookDataAccessor<'a> {
|
|
|
|
StoreIdAccess(&'a StoreIdAccessor),
|
|
|
|
MutableAccess(&'a MutableHookDataAccessor),
|
|
|
|
NonMutableAccess(&'a NonMutableHookDataAccessor),
|
2016-03-04 15:43:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub trait HookDataAccessorProvider {
|
2016-03-04 20:18:04 +00:00
|
|
|
fn accessor(&self) -> HookDataAccessor;
|
2016-03-04 15:43:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|