diff options
Diffstat (limited to 'plugins/plugin_fdman/src/plugin.rs')
-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); |