diff options
Diffstat (limited to 'ofborg/tickborg/src/locks.rs')
| -rw-r--r-- | ofborg/tickborg/src/locks.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/ofborg/tickborg/src/locks.rs b/ofborg/tickborg/src/locks.rs new file mode 100644 index 0000000000..d1d2ee4788 --- /dev/null +++ b/ofborg/tickborg/src/locks.rs @@ -0,0 +1,25 @@ +use fs2::FileExt; + +use std::fs; +use std::io::Error; +use std::path::PathBuf; + +pub trait Lockable { + fn lock_path(&self) -> PathBuf; + + fn lock(&self) -> Result<Lock, Error> { + let lock = fs::File::create(self.lock_path())?; + lock.lock_exclusive()?; + Ok(Lock { lock: Some(lock) }) + } +} + +pub struct Lock { + lock: Option<fs::File>, +} + +impl Lock { + pub fn unlock(&mut self) { + self.lock = None + } +} |
