diff options
author | Matthias Beyer <matthias.beyer@ifm.com> | 2022-09-10 12:09:26 +0200 |
---|---|---|
committer | Matthias Beyer <matthias.beyer@ifm.com> | 2022-09-10 12:13:33 +0200 |
commit | efe62dc17b020ebf772daec75353bda518a79a4e (patch) | |
tree | 5e8c7c07e098e6a42451485205bf7c5e1b2d2990 | |
parent | e3270d1dd4033160777d5b6f2eadf7ab2ff5f5ba (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.rs | 29 |
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); |