From 82b02509150b615360118ca381ad8c9fd39d2f29 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Wed, 20 Aug 2025 19:10:16 +0000 Subject: Falls back to `bracket` unless `releaseEff` is needed --- hsm-gpio/Hsm/GPIO.hs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'hsm-gpio/Hsm') diff --git a/hsm-gpio/Hsm/GPIO.hs b/hsm-gpio/Hsm/GPIO.hs index 7cc2c36..0e4e2e5 100644 --- a/hsm-gpio/Hsm/GPIO.hs +++ b/hsm-gpio/Hsm/GPIO.hs @@ -21,6 +21,7 @@ import Effectful.Dispatch.Static , getStaticRep , unsafeEff_ ) +import Effectful.Exception (bracket) import Effectful.Resource (Resource, allocateEff, releaseEff) import Foreign.C.String (withCString) import Foreign.C.Types (CSize (CSize), CUInt) @@ -92,12 +93,12 @@ runGPIO consumer action = do (lineSettingsKey, lineSettings) <- lineSettingsBracket (lineConfigKey, lineConfig) <- lineConfigBracket lineSettings (requestConfigKey, requestConfig) <- requestConfigBracket - (_, lineRequest) <- lineRequestBracket chip requestConfig lineConfig - releaseEff requestConfigKey - releaseEff lineConfigKey - releaseEff lineSettingsKey - releaseEff chipKey - evalStaticRep (GPIO lineRequest) action + lineRequestBracket chip requestConfig lineConfig $ \lineRequest -> do + releaseEff requestConfigKey + releaseEff lineConfigKey + releaseEff lineSettingsKey + releaseEff chipKey + evalStaticRep (GPIO lineRequest) action where chipBracket = allocateEff chipAlloc chipDealloc where @@ -148,7 +149,7 @@ runGPIO consumer action = do requestConfigDealloc requestConfig = do logMsg Info "Freeing request config" liftIO $ requestConfigFree requestConfig - lineRequestBracket chip requestConfig lineConfig = allocateEff lineRequestAlloc lineRequestDealloc + lineRequestBracket chip requestConfig lineConfig = bracket lineRequestAlloc lineRequestDealloc where lineRequestAlloc = do logMsg Info "Allocating line request" -- cgit v1.2.1