| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Consensus.Storage.FS.API.Types
Synopsis
- data OpenMode
- data AllowExisting
- allowExisting :: OpenMode -> AllowExisting
- data SeekMode
- data FsPath
- fsPathToList :: FsPath -> [Text]
- fsPathFromList :: [Text] -> FsPath
- fsPathSplit :: FsPath -> Maybe (FsPath, Text)
- fsPathInit :: HasCallStack => FsPath -> FsPath
- mkFsPath :: [String] -> FsPath
- newtype MountPoint = MountPoint FilePath
- fsToFilePath :: MountPoint -> FsPath -> FilePath
- fsFromFilePath :: MountPoint -> FilePath -> Maybe FsPath
- data Handle h = Handle {
- handleRaw :: !h
- handlePath :: !FsPath
- newtype AbsOffset = AbsOffset {}
- data FsError = FsError {}
- data FsErrorType
- data FsErrorPath = FsErrorPath (Maybe MountPoint) FsPath
- sameFsError :: FsError -> FsError -> Bool
- isFsErrorType :: FsErrorType -> FsError -> Bool
- prettyFsError :: FsError -> String
- fsToFsErrorPath :: MountPoint -> FsPath -> FsErrorPath
- fsToFsErrorPathUnmounted :: FsPath -> FsErrorPath
- hasMountPoint :: FsError -> Bool
- ioToFsError :: HasCallStack => FsErrorPath -> IOError -> FsError
- ioToFsErrorType :: IOError -> FsErrorType
Modes
How to hOpen a new file.
data AllowExisting Source #
When hOpening a file:
Constructors
| AllowExisting | The file may already exist. If it does, it is reopened. If it doesn't, it is created. |
| MustBeNew | The file may not yet exist. If it does, an error
( |
Instances
| Eq AllowExisting Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types Methods (==) :: AllowExisting -> AllowExisting -> Bool # (/=) :: AllowExisting -> AllowExisting -> Bool # | |
| Show AllowExisting Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types Methods showsPrec :: Int -> AllowExisting -> ShowS # show :: AllowExisting -> String # showList :: [AllowExisting] -> ShowS # | |
| Condense AllowExisting Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types Methods condense :: AllowExisting -> String Source # | |
A mode that determines the effect of hSeek hdl mode i.
Constructors
| AbsoluteSeek | the position of |
| RelativeSeek | the position of |
| SeekFromEnd | the position of |
Instances
| Enum SeekMode | Since: base-4.2.0.0 |
| Eq SeekMode | Since: base-4.2.0.0 |
| Ord SeekMode | Since: base-4.2.0.0 |
Defined in GHC.IO.Device | |
| Read SeekMode | Since: base-4.2.0.0 |
| Show SeekMode | Since: base-4.2.0.0 |
| Ix SeekMode | Since: base-4.2.0.0 |
Defined in GHC.IO.Device Methods range :: (SeekMode, SeekMode) -> [SeekMode] # index :: (SeekMode, SeekMode) -> SeekMode -> Int # unsafeIndex :: (SeekMode, SeekMode) -> SeekMode -> Int # inRange :: (SeekMode, SeekMode) -> SeekMode -> Bool # rangeSize :: (SeekMode, SeekMode) -> Int # unsafeRangeSize :: (SeekMode, SeekMode) -> Int # | |
| Condense SeekMode Source # | |
Paths
fsPathToList :: FsPath -> [Text] Source #
fsPathFromList :: [Text] -> FsPath Source #
fsPathInit :: HasCallStack => FsPath -> FsPath Source #
Drop the final component of the path
Undefined if the path is empty.
newtype MountPoint Source #
Mount point
FsPaths are not absolute paths, but must be interpreted with respect to
a particualar mount point.
Constructors
| MountPoint FilePath |
fsToFilePath :: MountPoint -> FsPath -> FilePath Source #
fsFromFilePath :: MountPoint -> FilePath -> Maybe FsPath Source #
Handles
Constructors
| Handle | |
Fields
| |
Instances
| Eq h => Eq (Handle h) Source # | |
| Show (Handle h) Source # | |
| Generic (Handle h) Source # | |
| NoThunks (Handle h) Source # | |
| Condense (Handle h) Source # | |
| type Rep (Handle h) Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types type Rep (Handle h) = D1 ('MetaData "Handle" "Ouroboros.Consensus.Storage.FS.API.Types" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "Handle" 'PrefixI 'True) (S1 ('MetaSel ('Just "handleRaw") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 h) :*: S1 ('MetaSel ('Just "handlePath") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FsPath))) | |
Offset
Constructors
| AbsOffset | |
Fields | |
Instances
| Bounded AbsOffset Source # | |
| Enum AbsOffset Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types Methods succ :: AbsOffset -> AbsOffset # pred :: AbsOffset -> AbsOffset # fromEnum :: AbsOffset -> Int # enumFrom :: AbsOffset -> [AbsOffset] # enumFromThen :: AbsOffset -> AbsOffset -> [AbsOffset] # enumFromTo :: AbsOffset -> AbsOffset -> [AbsOffset] # enumFromThenTo :: AbsOffset -> AbsOffset -> AbsOffset -> [AbsOffset] # | |
| Eq AbsOffset Source # | |
| Num AbsOffset Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types | |
| Ord AbsOffset Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types | |
| Show AbsOffset Source # | |
Errors
Constructors
| FsError | |
Fields
| |
Instances
| Show FsError Source # | |
| Exception FsError Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types Methods toException :: FsError -> SomeException # fromException :: SomeException -> Maybe FsError # displayException :: FsError -> String # | |
data FsErrorType Source #
Constructors
| FsIllegalOperation | |
| FsResourceInappropriateType | e.g the user tried to open a directory with hOpen rather than a file. |
| FsResourceAlreadyInUse | |
| FsResourceDoesNotExist | |
| FsResourceAlreadyExist | |
| FsReachedEOF | |
| FsDeviceFull | |
| FsTooManyOpenFiles | |
| FsInsufficientPermissions | |
| FsInvalidArgument | |
| FsOther | Used for all other error types |
Instances
| Eq FsErrorType Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types | |
| Show FsErrorType Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types Methods showsPrec :: Int -> FsErrorType -> ShowS # show :: FsErrorType -> String # showList :: [FsErrorType] -> ShowS # | |
data FsErrorPath Source #
For better error reporting to the end user, we want to include the mount point of the file. But the mountpoint may not always be available, like when we mock the fs or we simulate fs errors.
Constructors
| FsErrorPath (Maybe MountPoint) FsPath |
Instances
| Eq FsErrorPath Source # | We only care to compare the |
Defined in Ouroboros.Consensus.Storage.FS.API.Types | |
| Show FsErrorPath Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types Methods showsPrec :: Int -> FsErrorPath -> ShowS # show :: FsErrorPath -> String # showList :: [FsErrorPath] -> ShowS # | |
| Condense FsErrorPath Source # | |
Defined in Ouroboros.Consensus.Storage.FS.API.Types Methods condense :: FsErrorPath -> String Source # | |
sameFsError :: FsError -> FsError -> Bool Source #
Check if two errors are semantically the same error
This ignores the error string, the errno, and the callstack.
isFsErrorType :: FsErrorType -> FsError -> Bool Source #
prettyFsError :: FsError -> String Source #
fsToFsErrorPath :: MountPoint -> FsPath -> FsErrorPath Source #
fsToFsErrorPathUnmounted :: FsPath -> FsErrorPath Source #
Like fsToFsErrorPath, but when we don't have a MountPoint
hasMountPoint :: FsError -> Bool Source #
From IOError to FsError
ioToFsError :: HasCallStack => FsErrorPath -> IOError -> FsError Source #
ioToFsErrorType :: IOError -> FsErrorType Source #
Assign an FsErrorType to the given IOError.
Note that we don't always use the classification made by
errnoToIOError (also see Error) because it
combines some errors into one IOErrorType, e.g., EMFILE (too many open
files) and ENOSPC (no space left on device) both result in
ResourceExhausted while we want to keep them separate. For this reason,
we do a classification of our own based on the errno while sometimes
deferring to the existing classification.
See the ERRNO(3) man page for the meaning of the different errnos.