| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Keter.Types.Common
- type Appname = Text
- data Plugin = Plugin {
- pluginGetEnv :: Appname -> Object -> IO [(Text, Text)]
- type Plugins = [Plugin]
- class ToCurrent a where
- type Port = Int
- type Host = CI Text
- type HostBS = CI ByteString
- getAppname :: FilePath -> Text
- data LogMessage
- = ProcessCreated FilePath
- | InvalidBundle FilePath SomeException
- | ProcessDidNotStart FilePath
- | ExceptionThrown Text SomeException
- | RemovingPort Int
- | UnpackingBundle FilePath
- | TerminatingApp Text
- | FinishedReloading Text
- | TerminatingOldProcess AppId
- | RemovingOldFolder FilePath
- | ReceivedInotifyEvent Text
- | ProcessWaiting FilePath
- | OtherMessage Text
- | ErrorStartingBundle Text SomeException
- | SanityChecksPassed
- | ReservingHosts AppId (Set Host)
- | ForgetingReservations AppId (Set Host)
- | ActivatingApp AppId (Set Host)
- | DeactivatingApp AppId (Set Host)
- | ReactivatingApp AppId (Set Host) (Set Host)
- | WatchedFile Text FilePath
- data KeterException
- = CannotParsePostgres FilePath
- | ExitCodeFailure FilePath ExitCode
- | NoPortsAvailable
- | InvalidConfigFile ParseException
- | InvalidKeterConfigFile !FilePath !ParseException
- | CannotReserveHosts !AppId !(Map Host AppId)
- | FileNotExecutable !FilePath
- | ExecutableNotFound !FilePath
- logEx :: Q Exp
- data AppId
- data FilePath :: *
- data Text :: *
- data ByteString :: *
- data Set a :: * -> *
- data Map k a :: * -> * -> *
- class (Typeable * e, Show e) => Exception e
- data SomeException :: *
Documentation
Name of the application. Should just be the basename of the application file.
type HostBS = CI ByteString Source
getAppname :: FilePath -> Text Source
data LogMessage Source
Constructors
Instances
data KeterException Source
Constructors
| CannotParsePostgres FilePath | |
| ExitCodeFailure FilePath ExitCode | |
| NoPortsAvailable | |
| InvalidConfigFile ParseException | |
| InvalidKeterConfigFile !FilePath !ParseException | |
| CannotReserveHosts !AppId !(Map Host AppId) | |
| FileNotExecutable !FilePath | |
| ExecutableNotFound !FilePath |
Instances
data FilePath :: *
data Text :: *
Instances
| IsList Text | |
| Eq Text | |
| Data Text | |
| Ord Text | |
| Read Text | |
| Show Text | |
| IsString Text | |
| Monoid Text | |
| NFData Text | |
| FoldCase Text | |
| Hashable Text | |
| Semigroup Text | |
| ToJSON Text | |
| FromJSON Text | |
| Chunk Text | |
| Typeable * Text | |
| Monad m => Stream Text m Char | |
| (~) * a Text => IsString (Parser a) | |
| ToJSON v => ToJSON (Map Text v) | |
| ToJSON v => ToJSON (HashMap Text v) | |
| FromJSON v => FromJSON (Map Text v) | |
| FromJSON v => FromJSON (HashMap Text v) | |
| type Item Text = Char | |
| type State Text = Buffer | |
| type ChunkElem Text = Char |
data ByteString :: *
A space-efficient representation of a Word8 vector, supporting many
efficient operations.
A ByteString contains 8-bit bytes, or by using the operations from
Data.ByteString.Char8 it can be interpreted as containing 8-bit
characters.
Instances
| Eq ByteString | |
| Data ByteString | |
| Ord ByteString | |
| Read ByteString | |
| Show ByteString | |
| IsString ByteString | |
| Monoid ByteString | |
| NFData ByteString | |
| FoldCase ByteString | |
| Hashable ByteString | |
| Semigroup ByteString | |
| Extract ByteString | |
| Chunk ByteString | |
| Typeable * ByteString | |
| RegexLike Regex ByteString | |
| RegexContext Regex ByteString ByteString | |
| Monad m => Stream ByteString m Char | |
| RegexMaker Regex CompOption ExecOption ByteString | |
| (~) * a ByteString => IsString (Parser a) | |
| type State ByteString = Buffer | |
| type ChunkElem ByteString = Word8 |
data Set a :: * -> *
A set of values a.
Instances
| Foldable Set | |
| Eq a => Eq (Set a) | |
| (Data a, Ord a) => Data (Set a) | |
| Ord a => Ord (Set a) | |
| (Read a, Ord a) => Read (Set a) | |
| Show a => Show (Set a) | |
| Ord a => Monoid (Set a) | |
| NFData a => NFData (Set a) | |
| Ord a => Semigroup (Set a) | |
| ToJSON a => ToJSON (Set a) | |
| (Ord a, FromJSON a) => FromJSON (Set a) | |
| (ParseYamlFile a, Ord a) => ParseYamlFile (Set a) | |
| Default (Set v) | |
| Typeable (* -> *) Set |
data Map k a :: * -> * -> *
A Map from keys k to values a.
Instances
| Functor (Map k) | |
| Foldable (Map k) | |
| Traversable (Map k) | |
| (Eq k, Eq a) => Eq (Map k a) | |
| (Data k, Data a, Ord k) => Data (Map k a) | |
| (Ord k, Ord v) => Ord (Map k v) | |
| (Ord k, Read k, Read e) => Read (Map k e) | |
| (Show k, Show a) => Show (Map k a) | |
| Ord k => Monoid (Map k v) | |
| (NFData k, NFData a) => NFData (Map k a) | |
| Ord k => Semigroup (Map k v) | |
| ToJSON v => ToJSON (Map String v) | |
| ToJSON v => ToJSON (Map Text v) | |
| ToJSON v => ToJSON (Map Text v) | |
| FromJSON v => FromJSON (Map String v) | |
| FromJSON v => FromJSON (Map Text v) | |
| FromJSON v => FromJSON (Map Text v) | |
| Default (Map k v) | |
| Typeable (* -> * -> *) Map |
class (Typeable * e, Show e) => Exception e
Any type that you wish to throw or catch as an exception must be an
instance of the Exception class. The simplest case is a new exception
type directly below the root:
data MyException = ThisException | ThatException
deriving (Show, Typeable)
instance Exception MyExceptionThe default method definitions in the Exception class do what we need
in this case. You can now throw and catch ThisException and
ThatException as exceptions:
*Main> throw ThisException `catch` \e -> putStrLn ("Caught " ++ show (e :: MyException))
Caught ThisException
In more complicated examples, you may wish to define a whole hierarchy of exceptions:
---------------------------------------------------------------------
-- Make the root exception type for all the exceptions in a compiler
data SomeCompilerException = forall e . Exception e => SomeCompilerException e
deriving Typeable
instance Show SomeCompilerException where
show (SomeCompilerException e) = show e
instance Exception SomeCompilerException
compilerExceptionToException :: Exception e => e -> SomeException
compilerExceptionToException = toException . SomeCompilerException
compilerExceptionFromException :: Exception e => SomeException -> Maybe e
compilerExceptionFromException x = do
SomeCompilerException a <- fromException x
cast a
---------------------------------------------------------------------
-- Make a subhierarchy for exceptions in the frontend of the compiler
data SomeFrontendException = forall e . Exception e => SomeFrontendException e
deriving Typeable
instance Show SomeFrontendException where
show (SomeFrontendException e) = show e
instance Exception SomeFrontendException where
toException = compilerExceptionToException
fromException = compilerExceptionFromException
frontendExceptionToException :: Exception e => e -> SomeException
frontendExceptionToException = toException . SomeFrontendException
frontendExceptionFromException :: Exception e => SomeException -> Maybe e
frontendExceptionFromException x = do
SomeFrontendException a <- fromException x
cast a
---------------------------------------------------------------------
-- Make an exception type for a particular frontend compiler exception
data MismatchedParentheses = MismatchedParentheses
deriving (Typeable, Show)
instance Exception MismatchedParentheses where
toException = frontendExceptionToException
fromException = frontendExceptionFromExceptionWe can now catch a MismatchedParentheses exception as
MismatchedParentheses, SomeFrontendException or
SomeCompilerException, but not other types, e.g. IOException:
*Main> throw MismatchedParenthesescatche -> putStrLn ("Caught " ++ show (e :: MismatchedParentheses)) Caught MismatchedParentheses *Main> throw MismatchedParenthesescatche -> putStrLn ("Caught " ++ show (e :: SomeFrontendException)) Caught MismatchedParentheses *Main> throw MismatchedParenthesescatche -> putStrLn ("Caught " ++ show (e :: SomeCompilerException)) Caught MismatchedParentheses *Main> throw MismatchedParenthesescatche -> putStrLn ("Caught " ++ show (e :: IOException)) *** Exception: MismatchedParentheses
Instances
| Exception Timeout | |
| Exception PatternMatchFail | |
| Exception RecSelError | |
| Exception RecConError | |
| Exception RecUpdError | |
| Exception NoMethodError | |
| Exception NonTermination | |
| Exception NestedAtomically | |
| Exception BlockedIndefinitelyOnMVar | |
| Exception BlockedIndefinitelyOnSTM | |
| Exception Deadlock | |
| Exception AssertionFailed | |
| Exception SomeAsyncException | |
| Exception AsyncException | |
| Exception ArrayException | |
| Exception ExitCode | |
| Exception IOException | |
| Exception ErrorCall | |
| Exception ArithException | |
| Exception SomeException | |
| Exception Void | |
| Exception FormatError | |
| Exception TarBombError | |
| Exception PortabilityError | |
| Exception FileNameError | |
| Exception UnicodeException | |
| Exception YamlException | |
| Exception ParseException | |
| Exception ToEventRawException | |
| Exception InvalidAccess | |
| Exception HttpException | |
| Exception TimeoutTriggered | |
| Exception KeterException | |
| Exception TimeoutThread | |
| Exception WarpTLSException | |
| Exception TLSException | |
| Exception TLSError | |
| Exception EventVarietyMismatchException |
data SomeException :: *
The SomeException type is the root of the exception type hierarchy.
When an exception of type e is thrown, behind the scenes it is
encapsulated in a SomeException.
Instances