summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@ifm.com>2022-09-10 12:09:26 +0200
committerMatthias Beyer <matthias.beyer@ifm.com>2022-09-10 12:13:33 +0200
commitefe62dc17b020ebf772daec75353bda518a79a4e (patch)
tree5e8c7c07e098e6a42451485205bf7c5e1b2d2990
parente3270d1dd4033160777d5b6f2eadf7ab2ff5f5ba (diff)
Refactor: Let FdManPlugin::aquire_handles return Guard
Signed-off-by: Matthias Beyer <matthias.beyer@ifm.com>
-rw-r--r--plugins/plugin_fdman/src/plugin.rs29
1 files changed, 4 insertions, 25 deletions
diff --git a/plugins/plugin_fdman/src/plugin.rs b/plugins/plugin_fdman/src/plugin.rs
index 0c959162..4adf1602 100644
--- a/plugins/plugin_fdman/src/plugin.rs
+++ b/plugins/plugin_fdman/src/plugin.rs
@@ -27,7 +27,7 @@ impl FdManPlugin {
}
}
- fn aquire_handles(&self, count: u64) -> Result<FdHandles, Error> {
+ fn aquire_handles(&self, count: u64) -> Result<Guard, Error> {
let old_value = self
.currently_held_count
.fetch_add(count, std::sync::atomic::Ordering::SeqCst);
@@ -40,13 +40,11 @@ impl FdManPlugin {
received: (old_value - self.max_fds),
})
} else {
- Ok(FdHandles(count))
+ Ok(Guard::new(count, self.currently_held_count.clone()))
}
}
}
-struct FdHandles(u64);
-
impl tedge_api::plugin::PluginDeclaration for FdManPlugin {
type HandledMessages = (OpenOptions,);
}
@@ -63,30 +61,11 @@ impl Handle<OpenOptions> for FdManPlugin {
) -> Result<(), PluginError> {
let handles_to_aquire = 1;
match self.aquire_handles(handles_to_aquire) {
- Ok(FdHandles(aquired_handles)) => {
- if aquired_handles != handles_to_aquire {
- let err = Error::InsufficientHandles {
- required: handles_to_aquire,
- received: aquired_handles,
- };
- return sender
- .reply(OpenOptionsResult::new(
- message,
- Err(OpenOptionsError::from(err)),
- ))
- .map_err(|_| Error::SendingReply)
- .map_err(PluginError::from);
- }
-
+ Ok(guard) => {
let file_result = message
.as_std()
.open(message.path())
- .map(|file| {
- crate::file::FileGuard::new(
- file,
- Guard::new(aquired_handles, self.currently_held_count.clone()),
- )
- })
+ .map(|file| crate::file::FileGuard::new(file, guard))
.map_err(Error::from)
.map_err(OpenOptionsError::from);
let res = OpenOptionsResult::new(message, file_result);