Safe Haskell | None |
---|---|
Language | GHC2021 |
Navi.Event.Types
Description
This module provides types for defining notification events.
Synopsis
- data Event result trigger = MkEvent {
- errorNote :: ErrorNote
- name :: Text
- pollInterval :: PollInterval
- raiseAlert :: result -> Maybe (trigger, NaviNote)
- repeatEvent :: RepeatEvent trigger
- serviceType :: ServiceType result
- data AnyEvent where
- data RepeatEvent a
- = NoRepeats (IORef (Maybe a))
- | SomeRepeats (Set a) (IORef (Maybe a))
- | AllowRepeats
- data ErrorNote
- = NoErrNote
- | AllowErrNote (RepeatEvent ())
- data EventError = MkEventError {}
- data EventSuccess result trigger = MkEventSuccess {
- pollInterval :: Maybe PollInterval
- result :: result
- repeatEvent :: RepeatEvent trigger
- raiseAlert :: result -> Maybe (trigger, NaviNote)
Documentation
data Event result trigger Source #
Event
represents sending notifications. An event will:
- Query for information (i.e. run a shell command).
- Parse the result.
- Map the result to a trigger.
- Raise an alert if the trigger matches some condition.
For most services, the (result -> trigger) map will be trivial i.e. result and trigger will be identical.
For example, custom servicess is Text
, and NetInterfaces is
NetInterface. In these cases, there is an exact
correspondonce between the service query result and the trigger.
But for e.g. battery percentage, the result is Battery (percentage and status) whereas trigger is PercentageData.
See NOTE: [Battery Percentage Result/Trigger] for an explanation on why this might be desirable.
Constructors
MkEvent | |
Fields
|
Instances
(k ~ A_Lens, a ~ ErrorNote, b ~ ErrorNote) => LabelOptic "errorNote" k (Event result trigger) (Event result trigger) a b Source # | |
Defined in Navi.Event.Types | |
(k ~ A_Lens, a ~ Text, b ~ Text) => LabelOptic "name" k (Event result trigger) (Event result trigger) a b Source # | |
Defined in Navi.Event.Types | |
(k ~ A_Lens, a ~ PollInterval, b ~ PollInterval) => LabelOptic "pollInterval" k (Event result trigger) (Event result trigger) a b Source # | |
Defined in Navi.Event.Types | |
(k ~ A_Lens, a ~ (result -> Maybe (trigger, NaviNote)), b ~ (result -> Maybe (trigger, NaviNote))) => LabelOptic "raiseAlert" k (Event result trigger) (Event result trigger) a b Source # | |
Defined in Navi.Event.Types | |
(k ~ A_Lens, a ~ RepeatEvent trigger, b ~ RepeatEvent trigger) => LabelOptic "repeatEvent" k (Event result trigger) (Event result trigger) a b Source # | |
Defined in Navi.Event.Types | |
(k ~ A_Lens, a ~ ServiceType result, b ~ ServiceType result) => LabelOptic "serviceType" k (Event result trigger) (Event result trigger) a b Source # | |
Defined in Navi.Event.Types | |
Show trigger => Show (Event result trigger) Source # | |
Existentially quantifies result type on an Event
. Used so that we can
store different events in the same list.
data RepeatEvent a Source #
Determines if we are allowed to send off duplicate notifications
simultaneously. If we are not, then NoRepeats
holds the last trigger
so that we can detect duplicates.
Constructors
NoRepeats (IORef (Maybe a)) | |
SomeRepeats (Set a) (IORef (Maybe a)) | |
AllowRepeats |
Instances
Show a => Show (RepeatEvent a) Source # | |
Defined in Navi.Event.Types Methods showsPrec :: Int -> RepeatEvent a -> ShowS # show :: RepeatEvent a -> String # showList :: [RepeatEvent a] -> ShowS # |
Determines if we should send notifications for errors and, if so, if we allow repeats.
Constructors
NoErrNote | |
AllowErrNote (RepeatEvent ()) |
data EventError Source #
Represents an error when querying an Event
.
Constructors
MkEventError | |
Instances
data EventSuccess result trigger Source #
Holds the Event
data used after an event is successfully run.
Since: 0.1
Constructors
MkEventSuccess | |
Fields
|
Instances
(k ~ A_Lens, a ~ Maybe PollInterval, b ~ Maybe PollInterval) => LabelOptic "pollInterval" k (EventSuccess result trigger) (EventSuccess result trigger) a b Source # | |
Defined in Navi.Event.Types Methods labelOptic :: Optic k NoIx (EventSuccess result trigger) (EventSuccess result trigger) a b Source # | |
(k ~ A_Lens, a ~ (result -> Maybe (trigger, NaviNote)), b ~ (result -> Maybe (trigger, NaviNote))) => LabelOptic "raiseAlert" k (EventSuccess result trigger) (EventSuccess result trigger) a b Source # | |
Defined in Navi.Event.Types Methods labelOptic :: Optic k NoIx (EventSuccess result trigger) (EventSuccess result trigger) a b Source # | |
(k ~ A_Lens, a ~ RepeatEvent trigger, b ~ RepeatEvent trigger) => LabelOptic "repeatEvent" k (EventSuccess result trigger) (EventSuccess result trigger) a b Source # | |
Defined in Navi.Event.Types Methods labelOptic :: Optic k NoIx (EventSuccess result trigger) (EventSuccess result trigger) a b Source # | |
(k ~ A_Lens, a ~ result, b ~ result) => LabelOptic "result" k (EventSuccess result trigger) (EventSuccess result trigger) a b Source # | |
Defined in Navi.Event.Types Methods labelOptic :: Optic k NoIx (EventSuccess result trigger) (EventSuccess result trigger) a b Source # |