module System.FS.BlockIO.IO (
ioHasBlockIO
, withIOHasBlockIO
) where
import Control.Exception (bracket)
import System.FS.API (HasFS)
import System.FS.BlockIO.API (HasBlockIO (..), IOCtxParams)
import qualified System.FS.BlockIO.Internal as I
import System.FS.IO (HandleIO)
ioHasBlockIO ::
HasFS IO HandleIO
-> IOCtxParams
-> IO (HasBlockIO IO HandleIO)
ioHasBlockIO :: HasFS IO HandleIO -> IOCtxParams -> IO (HasBlockIO IO HandleIO)
ioHasBlockIO = HasFS IO HandleIO -> IOCtxParams -> IO (HasBlockIO IO HandleIO)
I.ioHasBlockIO
withIOHasBlockIO ::
HasFS IO HandleIO
-> IOCtxParams
-> (HasBlockIO IO HandleIO -> IO a)
-> IO a
withIOHasBlockIO :: forall a.
HasFS IO HandleIO
-> IOCtxParams -> (HasBlockIO IO HandleIO -> IO a) -> IO a
withIOHasBlockIO HasFS IO HandleIO
hfs IOCtxParams
params HasBlockIO IO HandleIO -> IO a
action =
IO (HasBlockIO IO HandleIO)
-> (HasBlockIO IO HandleIO -> IO ())
-> (HasBlockIO IO HandleIO -> IO a)
-> IO a
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (HasFS IO HandleIO -> IOCtxParams -> IO (HasBlockIO IO HandleIO)
ioHasBlockIO HasFS IO HandleIO
hfs IOCtxParams
params) (\HasBlockIO{HasCallStack => IO ()
close :: HasCallStack => IO ()
close :: forall (m :: * -> *) h. HasBlockIO m h -> HasCallStack => m ()
close} -> IO ()
HasCallStack => IO ()
close) HasBlockIO IO HandleIO -> IO a
action