navi
Safe HaskellNone
LanguageGHC2021

Navi.Env.Core

Description

This module provides the core Env type for Navi.

Synopsis

HasX-style Typeclasses

class HasEvents env where Source #

Retrieves the events.

Instances

Instances details
HasEvents Env Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "coreEnv" k a Env) => HasEvents (CoreEnvField a) Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "events" k a (NonEmpty AnyEvent)) => HasEvents (TopField a) Source # 
Instance details

Defined in Navi.Env.Core

class HasLogEnv env where Source #

Retrieves the log environment.

Methods

getLogEnv :: env -> Maybe LogEnv Source #

Instances

Instances details
HasLogEnv Env Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "coreEnv" k a Env) => HasLogEnv (CoreEnvField a) Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "logEnv" k a (Maybe LogEnv)) => HasLogEnv (TopField a) Source # 
Instance details

Defined in Navi.Env.Core

class HasNoteQueue env where Source #

Retrieves the note queue.

Instances

Instances details
HasNoteQueue Env Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "coreEnv" k a Env) => HasNoteQueue (CoreEnvField a) Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "noteQueue" k a (TBQueue NaviNote)) => HasNoteQueue (TopField a) Source # 
Instance details

Defined in Navi.Env.Core

sendNoteQueue :: (HasCallStack, HasNoteQueue env, MonadReader env m, MonadSTM m) => NaviNote -> m () Source #

Convenience function for retrieving a TBQueue NaviNote from the env and sending the note.

Deriving

newtype TopField a Source #

Used for deriving instances from the top level field name e.g. 'events :: NonEmpty AnyEvent'.

Constructors

MkTopField a 

Instances

Instances details
(Is k A_Getter, LabelOptic' "events" k a (NonEmpty AnyEvent)) => HasEvents (TopField a) Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "logEnv" k a (Maybe LogEnv)) => HasLogEnv (TopField a) Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "noteQueue" k a (TBQueue NaviNote)) => HasNoteQueue (TopField a) Source # 
Instance details

Defined in Navi.Env.Core

newtype CoreEnvField a Source #

Used for deriving instances for types with a field 'coreEnv :: Env'.

Constructors

MkCoreEnvField a 

Instances

Instances details
(Is k A_Getter, LabelOptic' "coreEnv" k a Env) => HasEvents (CoreEnvField a) Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "coreEnv" k a Env) => HasLogEnv (CoreEnvField a) Source # 
Instance details

Defined in Navi.Env.Core

(Is k A_Getter, LabelOptic' "coreEnv" k a Env) => HasNoteQueue (CoreEnvField a) Source # 
Instance details

Defined in Navi.Env.Core

Concrete Env

data Env Source #

Env holds all of our environment data that is used while running navi.

Instances

Instances details
HasEvents Env Source # 
Instance details

Defined in Navi.Env.Core

HasLogEnv Env Source # 
Instance details

Defined in Navi.Env.Core

HasNoteQueue Env Source # 
Instance details

Defined in Navi.Env.Core

(k ~ A_Lens, a ~ NonEmpty AnyEvent, b ~ NonEmpty AnyEvent) => LabelOptic "events" k Env Env a b Source # 
Instance details

Defined in Navi.Env.Core

Methods

labelOptic :: Optic k NoIx Env Env a b Source #

(k ~ A_Lens, a ~ Maybe LogEnv, b ~ Maybe LogEnv) => LabelOptic "logEnv" k Env Env a b Source # 
Instance details

Defined in Navi.Env.Core

Methods

labelOptic :: Optic k NoIx Env Env a b Source #

(k ~ A_Lens, x ~ Namespace, y ~ Namespace) => LabelOptic "namespace" k Env Env x y Source # 
Instance details

Defined in Navi.Env.Core

Methods

labelOptic :: Optic k NoIx Env Env x y Source #

(k ~ A_Lens, a ~ TBQueue NaviNote, b ~ TBQueue NaviNote) => LabelOptic "noteQueue" k Env Env a b Source # 
Instance details

Defined in Navi.Env.Core

Methods

labelOptic :: Optic k NoIx Env Env a b Source #

(k ~ A_Lens, a ~ NoteSystem 'ConfigPhaseEnv, b ~ NoteSystem 'ConfigPhaseEnv) => LabelOptic "notifySystem" k Env Env a b Source # 
Instance details

Defined in Navi.Env.Core

Methods

labelOptic :: Optic k NoIx Env Env a b Source #

(MonadSTM m, MonadTime m, MonadThread m) => MonadLogger (NaviT Env m) Source # 
Instance details

Defined in Navi.NaviT

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> NaviT Env m () Source #

(MonadDBus m, MonadSTM m, MonadTime m, MonadThread m, MonadTypedProcess m) => MonadNotify (NaviT Env m) Source # 
Instance details

Defined in Navi.NaviT

Methods

sendNote :: NaviNote -> NaviT Env m () Source #