conduit-vfs-0.1.0.3: Virtual file system for Conduit; disk, pure, and in-memory impls.

Safe HaskellNone
LanguageHaskell2010

Data.Conduit.VFS.Disk

Description

Read operations are not atomic, but write operations are probably atomic. Specifically, reads acquire a SharedLock via hLock. Writes first persist to a temporary file, and then perform a copy using copyFileWithMetadata. If copyFileWithMetadata is atomic on your implementation (it probably is), then writes are atomic.

The FilePath values used in this VFS are split using splitPath and joined using </>. Relative paths are resolved relative to the current working directory: changing that directory is outside the scope of this module.

Synopsis

Documentation

data DiskVFS m a Source #

The basic implementation of the VFS.

Instances
MonadTrans (DiskVFS :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

lift :: Monad m => m a -> DiskVFS m a #

Monad m => Monad (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

(>>=) :: DiskVFS m a -> (a -> DiskVFS m b) -> DiskVFS m b #

(>>) :: DiskVFS m a -> DiskVFS m b -> DiskVFS m b #

return :: a -> DiskVFS m a #

fail :: String -> DiskVFS m a #

Functor m => Functor (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

fmap :: (a -> b) -> DiskVFS m a -> DiskVFS m b #

(<$) :: a -> DiskVFS m b -> DiskVFS m a #

MonadFail m => MonadFail (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

fail :: String -> DiskVFS m a #

Applicative m => Applicative (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

pure :: a -> DiskVFS m a #

(<*>) :: DiskVFS m (a -> b) -> DiskVFS m a -> DiskVFS m b #

liftA2 :: (a -> b -> c) -> DiskVFS m a -> DiskVFS m b -> DiskVFS m c #

(*>) :: DiskVFS m a -> DiskVFS m b -> DiskVFS m b #

(<*) :: DiskVFS m a -> DiskVFS m b -> DiskVFS m a #

MonadIO m => MonadIO (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

liftIO :: IO a -> DiskVFS m a #

MonadUnliftIO m => MonadUnliftIO (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

askUnliftIO :: DiskVFS m (UnliftIO (DiskVFS m)) #

withRunInIO :: ((forall a. DiskVFS m a -> IO a) -> IO b) -> DiskVFS m b #

MonadResource m => MonadResource (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

liftResourceT :: ResourceT IO a -> DiskVFS m a #

MonadThrow m => MonadThrow (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

throwM :: Exception e => e -> DiskVFS m a #

MonadCatch m => MonadCatch (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

catch :: Exception e => DiskVFS m a -> (e -> DiskVFS m a) -> DiskVFS m a #

MonadMask m => MonadMask (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

Methods

mask :: ((forall a. DiskVFS m a -> DiskVFS m a) -> DiskVFS m b) -> DiskVFS m b #

uninterruptibleMask :: ((forall a. DiskVFS m a -> DiskVFS m a) -> DiskVFS m b) -> DiskVFS m b #

generalBracket :: DiskVFS m a -> (a -> ExitCase b -> DiskVFS m c) -> (a -> DiskVFS m b) -> DiskVFS m (b, c) #

MonadUnliftIO m => VFSC (DiskVFS m) Source #

A class denoting that the type is usable as VFS conduits for reading and writing.

Instance details

Defined in Data.Conduit.VFS.Disk

MonadUnliftIO m => WriteVFSC (DiskVFS m) Source #

A class denoting that the type is usable as VFS conduits for writing.

Instance details

Defined in Data.Conduit.VFS.Disk

MonadUnliftIO m => ReadVFSC (DiskVFS m) Source # 
Instance details

Defined in Data.Conduit.VFS.Disk

runDiskVFS :: DiskVFS m a -> m a Source #

Given a DiskVFS, run it in the local monad and return the monadic return value.

runDiskVFS_ :: Monad m => DiskVFS m a -> m () Source #

Given a DiskVFS, run it in the local monad and disregard any results.