Add StoreIdAccessor trait
This commit is contained in:
parent
fa9e8e8192
commit
3e62b71605
2 changed files with 17 additions and 5 deletions
|
@ -1,5 +1,10 @@
|
|||
use hook::result::HookResult;
|
||||
use store::FileLockEntry;
|
||||
use storeid::StoreId;
|
||||
|
||||
pub trait StoreIdAccessor : Send + Sync {
|
||||
fn access(&self, &StoreId) -> HookResult<()>;
|
||||
}
|
||||
|
||||
pub trait MutableHookDataAccessor : Send + Sync {
|
||||
fn access_mut(&self, &mut FileLockEntry) -> HookResult<()>;
|
||||
|
@ -10,6 +15,7 @@ pub trait NonMutableHookDataAccessor : Send + Sync {
|
|||
}
|
||||
|
||||
pub enum HookDataAccessor {
|
||||
StoreIdAccess(Box<StoreIdAccessor>),
|
||||
MutableAccess(Box<MutableHookDataAccessor>),
|
||||
NonMutableAccess(Box<NonMutableHookDataAccessor>),
|
||||
}
|
||||
|
|
|
@ -498,19 +498,25 @@ impl Store {
|
|||
match accessor.deref() {
|
||||
&HDA::MutableAccess(ref accessor) => {
|
||||
match acc {
|
||||
Ok(mut fle) => accessor.access_mut(&mut fle).and(Ok(fle)),
|
||||
Err(e) => Err(e),
|
||||
Ok(mut fle) => accessor
|
||||
.access_mut(&mut fle)
|
||||
.and(Ok(fle))
|
||||
.map_err(|e| SE::new(SEK::HookExecutionError, Some(Box::new(e)))),
|
||||
Err(e) => Err(SE::new(SEK::HookExecutionError, Some(Box::new(e)))),
|
||||
}
|
||||
},
|
||||
&HDA::NonMutableAccess(ref accessor) => {
|
||||
match acc {
|
||||
Ok(mut fle) => accessor.access(&fle).and(Ok(fle)),
|
||||
Err(e) => Err(e),
|
||||
Ok(mut fle) => accessor
|
||||
.access(&fle)
|
||||
.and(Ok(fle))
|
||||
.map_err(|e| SE::new(SEK::HookExecutionError, Some(Box::new(e)))),
|
||||
Err(e) => Err(SE::new(SEK::HookExecutionError, Some(Box::new(e)))),
|
||||
}
|
||||
},
|
||||
_ => Err(StoreError::new(StoreErrorKind::HookExecutionError, None)),
|
||||
}
|
||||
})
|
||||
.map_err(|e| SE::new(SEK::HookExecutionError, Some(Box::new(e))))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue