use rfuse3::raw::Request;
#[derive(Debug, Clone, Copy)]
pub struct OperationContext {
pub req: Request,
pub uid: Option<u32>,
pub gid: Option<u32>,
}
impl From<Request> for OperationContext {
fn from(req: Request) -> Self {
OperationContext {
req,
uid: None,
gid: None,
}
}
}
impl OperationContext {
pub fn new(req: Request) -> Self {
Self::from(req)
}
pub fn with_credentials(req: Request, uid: u32, gid: u32) -> Self {
OperationContext {
req,
uid: Some(uid),
gid: Some(gid),
}
}
pub fn effective_uid(&self) -> Option<u32> {
self.uid.or(Some(self.req.uid))
}
pub fn effective_gid(&self) -> Option<u32> {
self.gid.or(Some(self.req.gid))
}
}