packages feed

extensible-effects-concurrent 0.24.3 → 0.25.0

raw patch · 23 files changed

+453/−195 lines, 23 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Control.Eff.Concurrent: defaultMainSingleThreaded :: HasCallStack => Eff (InterruptableProcess LoggingAndIo) () -> IO ()
- Control.Eff.Concurrent: schedulePure :: Eff (InterruptableProcess '[Logs, LogWriterReader PureLogWriter]) a -> Either (Interrupt 'NoRecovery) a
- Control.Eff.Concurrent: type ConsProcess r = Process r : r
- Control.Eff.Concurrent: type HasSchedulerIO r = (HasCallStack, Lifted IO r, SchedulerIO <:: r)
- Control.Eff.Concurrent: type InterruptableProcEff = InterruptableProcess SchedulerIO
- Control.Eff.Concurrent: type InterruptableProcess e = Interrupts : Process e : e
- Control.Eff.Concurrent: type ProcEff = ConsProcess SchedulerIO
- Control.Eff.Concurrent: type SchedulerIO = (Reader SchedulerState : LoggingAndIo)
- Control.Eff.Concurrent.Process: type ConsProcess r = Process r : r
- Control.Eff.Concurrent.Process: type InterruptableProcess e = Interrupts : Process e : e
- Control.Eff.Concurrent.Process.ForkIOScheduler: type HasSchedulerIO r = (HasCallStack, Lifted IO r, SchedulerIO <:: r)
- Control.Eff.Concurrent.Process.ForkIOScheduler: type InterruptableProcEff = InterruptableProcess SchedulerIO
- Control.Eff.Concurrent.Process.ForkIOScheduler: type ProcEff = ConsProcess SchedulerIO
- Control.Eff.Concurrent.Process.ForkIOScheduler: type SchedulerIO = (Reader SchedulerState : LoggingAndIo)
- Control.Eff.Concurrent.Process.SingleThreadedScheduler: defaultMainSingleThreaded :: HasCallStack => Eff (InterruptableProcess LoggingAndIo) () -> IO ()
- Control.Eff.Concurrent.Protocol.EffectfulServer: instance Control.DeepSeq.NFData (Control.Eff.Concurrent.Protocol.EffectfulServer.Init (Control.Eff.Concurrent.Protocol.EffectfulServer.GenServer tag eLoop e) (Control.Eff.Concurrent.Process.InterruptableProcess e))
- Control.Eff.Concurrent.Protocol.EffectfulServer: instance Control.Eff.Concurrent.Protocol.EffectfulServer.TangibleGenServer tag eLoop e => Control.Eff.Concurrent.Protocol.EffectfulServer.Server (Control.Eff.Concurrent.Protocol.EffectfulServer.GenServer tag eLoop e) (Control.Eff.Concurrent.Process.InterruptableProcess e)
- Control.Eff.Concurrent.Protocol.EffectfulServer: instance Data.Typeable.Internal.Typeable tag => GHC.Show.Show (Control.Eff.Concurrent.Protocol.EffectfulServer.Init (Control.Eff.Concurrent.Protocol.EffectfulServer.GenServer tag eLoop e) (Control.Eff.Concurrent.Process.InterruptableProcess e))
- Control.Eff.Concurrent.Protocol.EffectfulServer: type Effects a e = e;
- Control.Eff.Concurrent.Protocol.StatefulServer: instance Control.Eff.Concurrent.Protocol.StatefulServer.Server a q => Control.Eff.Concurrent.Protocol.EffectfulServer.Server (Control.Eff.Concurrent.Protocol.StatefulServer.Stateful a) (Control.Eff.Concurrent.Process.InterruptableProcess q)
+ Control.Eff.Concurrent: type BaseEffects = Reader SchedulerState : LoggingAndIo
+ Control.Eff.Concurrent: type Effects = Processes BaseEffects
+ Control.Eff.Concurrent: type HasBaseEffects r = (HasCallStack, Lifted IO r, BaseEffects <:: r)
+ Control.Eff.Concurrent: type Processes e = Interrupts : SafeProcesses e
+ Control.Eff.Concurrent: type SafeEffects = SafeProcesses BaseEffects
+ Control.Eff.Concurrent: type SafeProcesses r = Process r : r
+ Control.Eff.Concurrent.Process: type Processes e = Interrupts : SafeProcesses e
+ Control.Eff.Concurrent.Process: type SafeProcesses r = Process r : r
+ Control.Eff.Concurrent.Process.ForkIOScheduler: type BaseEffects = Reader SchedulerState : LoggingAndIo
+ Control.Eff.Concurrent.Process.ForkIOScheduler: type Effects = Processes BaseEffects
+ Control.Eff.Concurrent.Process.ForkIOScheduler: type HasBaseEffects r = (HasCallStack, Lifted IO r, BaseEffects <:: r)
+ Control.Eff.Concurrent.Process.ForkIOScheduler: type SafeEffects = SafeProcesses BaseEffects
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: defaultMain :: HasCallStack => Eff EffectsIo () -> IO ()
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: defaultMainWithLogWriter :: HasCallStack => LogWriter IO -> Eff EffectsIo () -> IO ()
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: type BaseEffectsIo = LoggingAndIo
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: type EffectsIo = Processes BaseEffectsIo
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: type HasBaseEffectsIo e = (HasCallStack, Lifted IO e, LoggingAndIo <:: e)
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: type HasPureBaseEffects e = (HasCallStack, PureBaseEffects <:: e)
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: type PureBaseEffects = '[Logs, LogWriterReader PureLogWriter]
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: type PureEffects = Processes PureBaseEffects
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: type PureSafeEffects = SafeProcesses PureBaseEffects
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: type SafeEffectsIo = SafeProcesses BaseEffectsIo
+ Control.Eff.Concurrent.Protocol.EffectfulServer: instance Control.DeepSeq.NFData (Control.Eff.Concurrent.Protocol.EffectfulServer.Init (Control.Eff.Concurrent.Protocol.EffectfulServer.GenServer tag eLoop e) (Control.Eff.Concurrent.Process.Processes e))
+ Control.Eff.Concurrent.Protocol.EffectfulServer: instance Control.Eff.Concurrent.Protocol.EffectfulServer.TangibleGenServer tag eLoop e => Control.Eff.Concurrent.Protocol.EffectfulServer.Server (Control.Eff.Concurrent.Protocol.EffectfulServer.GenServer tag eLoop e) (Control.Eff.Concurrent.Process.Processes e)
+ Control.Eff.Concurrent.Protocol.EffectfulServer: instance Data.Typeable.Internal.Typeable tag => GHC.Show.Show (Control.Eff.Concurrent.Protocol.EffectfulServer.Init (Control.Eff.Concurrent.Protocol.EffectfulServer.GenServer tag eLoop e) (Control.Eff.Concurrent.Process.Processes e))
+ Control.Eff.Concurrent.Protocol.EffectfulServer: type ServerEffects a e = e;
+ Control.Eff.Concurrent.Protocol.StatefulServer: instance Control.Eff.Concurrent.Protocol.StatefulServer.Server a q => Control.Eff.Concurrent.Protocol.EffectfulServer.Server (Control.Eff.Concurrent.Protocol.StatefulServer.Stateful a) (Control.Eff.Concurrent.Process.Processes q)
+ Control.Eff.Concurrent.Pure: Asynchronous :: Synchronicity
+ Control.Eff.Concurrent.Pure: Crash :: ExitSeverity
+ Control.Eff.Concurrent.Pure: Endpoint :: ProcessId -> Endpoint protocol
+ Control.Eff.Concurrent.Pure: Facility :: Int -> Facility
+ Control.Eff.Concurrent.Pure: MkCaptureLogs :: Eff '[CaptureLogWriter] a -> CaptureLogs a
+ Control.Eff.Concurrent.Pure: MkLogMessage :: !Facility -> !Severity -> Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> [StructuredDataElement] -> Maybe ThreadId -> Maybe SrcLoc -> Text -> LogMessage
+ Control.Eff.Concurrent.Pure: MkLogWriter :: (LogMessage -> writerM ()) -> LogWriter writerM
+ Control.Eff.Concurrent.Pure: MkPureLogWriter :: Identity a -> PureLogWriter a
+ Control.Eff.Concurrent.Pure: MkSdParameter :: !Text -> !Text -> SdParameter
+ Control.Eff.Concurrent.Pure: MkSerializer :: (message -> StrictDynamic) -> Serializer message
+ Control.Eff.Concurrent.Pure: MonitorReference :: Int -> ProcessId -> MonitorReference
+ Control.Eff.Concurrent.Pure: NoRecovery :: ExitRecovery
+ Control.Eff.Concurrent.Pure: NormalExit :: ExitSeverity
+ Control.Eff.Concurrent.Pure: ProcessBooting :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusy :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusyDemonitoring :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusyLinking :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusyMonitoring :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusyReceiving :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusySending :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusySendingInterrupt :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusySendingShutdown :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusyUnlinking :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessBusyUpdatingDetails :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessDown :: !MonitorReference -> !SomeExitReason -> ProcessDown
+ Control.Eff.Concurrent.Pure: ProcessId :: Int -> ProcessId
+ Control.Eff.Concurrent.Pure: ProcessIdle :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessInterrupted :: ProcessState
+ Control.Eff.Concurrent.Pure: ProcessShuttingDown :: ProcessState
+ Control.Eff.Concurrent.Pure: Recoverable :: ExitRecovery
+ Control.Eff.Concurrent.Pure: SdElement :: !Text -> ![SdParameter] -> StructuredDataElement
+ Control.Eff.Concurrent.Pure: Synchronous :: Type -> Synchronicity
+ Control.Eff.Concurrent.Pure: [Demonitor] :: MonitorReference -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.Pure: [ErrorInterrupt] :: String -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.Pure: [ExitNormally] :: Interrupt 'NoRecovery
+ Control.Eff.Concurrent.Pure: [ExitProcessCancelled] :: Interrupt 'NoRecovery
+ Control.Eff.Concurrent.Pure: [ExitUnhandledError] :: Text -> Interrupt 'NoRecovery
+ Control.Eff.Concurrent.Pure: [FlushMessages] :: Process r (ResumeProcess [StrictDynamic])
+ Control.Eff.Concurrent.Pure: [GetProcessState] :: ProcessId -> Process r (ResumeProcess (Maybe (ProcessTitle, ProcessDetails, ProcessState)))
+ Control.Eff.Concurrent.Pure: [Interrupted] :: Interrupt 'Recoverable -> ResumeProcess v
+ Control.Eff.Concurrent.Pure: [Link] :: ProcessId -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.Pure: [LinkedProcessCrashed] :: ProcessId -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.Pure: [MakeReference] :: Process r (ResumeProcess Int)
+ Control.Eff.Concurrent.Pure: [Monitor] :: ProcessId -> Process r (ResumeProcess MonitorReference)
+ Control.Eff.Concurrent.Pure: [NormalExitRequested] :: Interrupt 'Recoverable
+ Control.Eff.Concurrent.Pure: [Observer] :: (Tangible o, TangiblePdu p 'Asynchronous, Tangible (Endpoint p), Typeable p) => (o -> Maybe (Pdu p 'Asynchronous)) -> Endpoint p -> Observer o
+ Control.Eff.Concurrent.Pure: [OtherProcessNotRunning] :: ProcessId -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.Pure: [ReceiveSelectedMessage] :: forall r a. MessageSelector a -> Process r (ResumeProcess a)
+ Control.Eff.Concurrent.Pure: [ResumeWith] :: a -> ResumeProcess a
+ Control.Eff.Concurrent.Pure: [SelfPid] :: Process r (ResumeProcess ProcessId)
+ Control.Eff.Concurrent.Pure: [SendInterrupt] :: ProcessId -> Interrupt 'Recoverable -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.Pure: [SendMessage] :: ProcessId -> StrictDynamic -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.Pure: [SendShutdown] :: ProcessId -> Interrupt 'NoRecovery -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.Pure: [Shutdown] :: Interrupt 'NoRecovery -> Process r a
+ Control.Eff.Concurrent.Pure: [SomeExitReason] :: Interrupt x -> SomeExitReason
+ Control.Eff.Concurrent.Pure: [SpawnLink] :: ProcessTitle -> Eff (Process r : r) () -> Process r (ResumeProcess ProcessId)
+ Control.Eff.Concurrent.Pure: [Spawn] :: ProcessTitle -> Eff (Process r : r) () -> Process r (ResumeProcess ProcessId)
+ Control.Eff.Concurrent.Pure: [TimeoutInterrupt] :: String -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.Pure: [Unlink] :: ProcessId -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.Pure: [UpdateProcessDetails] :: ProcessDetails -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.Pure: [YieldProcess] :: Process r (ResumeProcess ())
+ Control.Eff.Concurrent.Pure: [_fromEndpoint] :: Endpoint protocol -> ProcessId
+ Control.Eff.Concurrent.Pure: [_fromProcessId] :: ProcessId -> Int
+ Control.Eff.Concurrent.Pure: [_lmAppName] :: LogMessage -> Maybe Text
+ Control.Eff.Concurrent.Pure: [_lmFacility] :: LogMessage -> !Facility
+ Control.Eff.Concurrent.Pure: [_lmHostname] :: LogMessage -> Maybe Text
+ Control.Eff.Concurrent.Pure: [_lmMessageId] :: LogMessage -> Maybe Text
+ Control.Eff.Concurrent.Pure: [_lmMessage] :: LogMessage -> Text
+ Control.Eff.Concurrent.Pure: [_lmProcessId] :: LogMessage -> Maybe Text
+ Control.Eff.Concurrent.Pure: [_lmSeverity] :: LogMessage -> !Severity
+ Control.Eff.Concurrent.Pure: [_lmSrcLoc] :: LogMessage -> Maybe SrcLoc
+ Control.Eff.Concurrent.Pure: [_lmStructuredData] :: LogMessage -> [StructuredDataElement]
+ Control.Eff.Concurrent.Pure: [_lmThreadId] :: LogMessage -> Maybe ThreadId
+ Control.Eff.Concurrent.Pure: [_lmTimestamp] :: LogMessage -> Maybe UTCTime
+ Control.Eff.Concurrent.Pure: [_sdElementId] :: StructuredDataElement -> !Text
+ Control.Eff.Concurrent.Pure: [_sdElementParameters] :: StructuredDataElement -> ![SdParameter]
+ Control.Eff.Concurrent.Pure: [downReason] :: ProcessDown -> !SomeExitReason
+ Control.Eff.Concurrent.Pure: [downReference] :: ProcessDown -> !MonitorReference
+ Control.Eff.Concurrent.Pure: [fromFacility] :: Facility -> Int
+ Control.Eff.Concurrent.Pure: [monitorIndex] :: MonitorReference -> Int
+ Control.Eff.Concurrent.Pure: [monitoredProcess] :: MonitorReference -> ProcessId
+ Control.Eff.Concurrent.Pure: [runLogWriter] :: LogWriter writerM -> LogMessage -> writerM ()
+ Control.Eff.Concurrent.Pure: [runPureLogWriter] :: PureLogWriter a -> Identity a
+ Control.Eff.Concurrent.Pure: [runSerializer] :: Serializer message -> message -> StrictDynamic
+ Control.Eff.Concurrent.Pure: [unCaptureLogs] :: CaptureLogs a -> Eff '[CaptureLogWriter] a
+ Control.Eff.Concurrent.Pure: addLogWriter :: forall h e a. (HasCallStack, LogsTo h e, Monad h) => LogWriter h -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: alertSeverity :: Severity
+ Control.Eff.Concurrent.Pure: allLogMessages :: LogPredicate
+ Control.Eff.Concurrent.Pure: asEndpoint :: forall protocol. ProcessId -> Endpoint protocol
+ Control.Eff.Concurrent.Pure: askEndpoint :: Member (EndpointReader o) e => Eff e (Endpoint o)
+ Control.Eff.Concurrent.Pure: askLogPredicate :: forall e. Member Logs e => Eff e LogPredicate
+ Control.Eff.Concurrent.Pure: askLogWriter :: SetMember LogWriterReader (LogWriterReader h) e => Eff e (LogWriter h)
+ Control.Eff.Concurrent.Pure: becauseProcessIsDown :: ProcessDown -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.Pure: call :: forall result protocol' protocol r q. (SetMember Process (Process q) r, Member Interrupts r, TangiblePdu protocol' ( 'Synchronous result), TangiblePdu protocol ( 'Synchronous result), EmbedProtocol protocol' protocol, Tangible result, HasCallStack) => Endpoint protocol' -> Pdu protocol ( 'Synchronous result) -> Eff r result
+ Control.Eff.Concurrent.Pure: callEndpointReader :: forall reply o r q. (ServesProtocol o r q, HasCallStack, Tangible reply, TangiblePdu o ( 'Synchronous reply), Member Interrupts r) => Pdu o ( 'Synchronous reply) -> Eff r reply
+ Control.Eff.Concurrent.Pure: callWithTimeout :: forall result protocol' protocol r q. (SetMember Process (Process q) r, Member Interrupts r, TangiblePdu protocol' ( 'Synchronous result), TangiblePdu protocol ( 'Synchronous result), EmbedProtocol protocol' protocol, Tangible result, Member Logs r, Lifted IO q, Lifted IO r, HasCallStack) => Endpoint protocol' -> Pdu protocol ( 'Synchronous result) -> Timeout -> Eff r result
+ Control.Eff.Concurrent.Pure: cancelTimer :: forall r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => TimerReference -> Eff r ()
+ Control.Eff.Concurrent.Pure: captureLogWriter :: LogWriter CaptureLogs
+ Control.Eff.Concurrent.Pure: cast :: forall o' o r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r, TangiblePdu o' 'Asynchronous, TangiblePdu o 'Asynchronous, EmbedProtocol o' o) => Endpoint o' -> Pdu o 'Asynchronous -> Eff r ()
+ Control.Eff.Concurrent.Pure: castEndpointReader :: forall o r q. (ServesProtocol o r q, HasCallStack, Member Interrupts r, TangiblePdu o 'Asynchronous) => Pdu o 'Asynchronous -> Eff r ()
+ Control.Eff.Concurrent.Pure: censorLogs :: LogsTo h e => (LogMessage -> LogMessage) -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: censorLogsM :: (LogsTo h e, Monad h) => (LogMessage -> h LogMessage) -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: class EmbedProtocol protocol embeddedProtocol
+ Control.Eff.Concurrent.Pure: class HandleLogWriter (writerEff :: Type -> Type) e
+ Control.Eff.Concurrent.Pure: class ToLogMessage a
+ Control.Eff.Concurrent.Pure: clockDaemon :: Facility
+ Control.Eff.Concurrent.Pure: clockDaemon2 :: Facility
+ Control.Eff.Concurrent.Pure: consoleLogWriter :: LogWriter IO
+ Control.Eff.Concurrent.Pure: criticalSeverity :: Severity
+ Control.Eff.Concurrent.Pure: data ExitRecovery
+ Control.Eff.Concurrent.Pure: data ExitSeverity
+ Control.Eff.Concurrent.Pure: data Interrupt (t :: ExitRecovery)
+ Control.Eff.Concurrent.Pure: data LogMessage
+ Control.Eff.Concurrent.Pure: data LogMessageTimeRenderer
+ Control.Eff.Concurrent.Pure: data LogWriterReader h v
+ Control.Eff.Concurrent.Pure: data Logs v
+ Control.Eff.Concurrent.Pure: data MessageSelector a
+ Control.Eff.Concurrent.Pure: data MonitorReference
+ Control.Eff.Concurrent.Pure: data ObservationQueue a
+ Control.Eff.Concurrent.Pure: data Observer o
+ Control.Eff.Concurrent.Pure: data ObserverRegistry o
+ Control.Eff.Concurrent.Pure: data Observers o
+ Control.Eff.Concurrent.Pure: data Process (r :: [Type -> Type]) b
+ Control.Eff.Concurrent.Pure: data ProcessDown
+ Control.Eff.Concurrent.Pure: data ProcessState
+ Control.Eff.Concurrent.Pure: data ResumeProcess v
+ Control.Eff.Concurrent.Pure: data SdParameter
+ Control.Eff.Concurrent.Pure: data Severity
+ Control.Eff.Concurrent.Pure: data SomeExitReason
+ Control.Eff.Concurrent.Pure: data StrictDynamic
+ Control.Eff.Concurrent.Pure: data StructuredDataElement
+ Control.Eff.Concurrent.Pure: data Synchronicity
+ Control.Eff.Concurrent.Pure: data Timeout
+ Control.Eff.Concurrent.Pure: data TimerElapsed
+ Control.Eff.Concurrent.Pure: data TimerReference
+ Control.Eff.Concurrent.Pure: data family Pdu (protocol :: Type) (reply :: Synchronicity)
+ Control.Eff.Concurrent.Pure: debugMessage :: HasCallStack => Text -> LogMessage
+ Control.Eff.Concurrent.Pure: debugMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
+ Control.Eff.Concurrent.Pure: debugSeverity :: Severity
+ Control.Eff.Concurrent.Pure: debugTraceLogWriter :: forall h. Monad h => LogMessageRenderer Text -> LogWriter h
+ Control.Eff.Concurrent.Pure: defaultIoLogWriter :: Text -> Facility -> LogWriter IO -> LogWriter IO
+ Control.Eff.Concurrent.Pure: demonitor :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => MonitorReference -> Eff r ()
+ Control.Eff.Concurrent.Pure: discriminateByAppName :: Text -> LogPredicate -> LogPredicate -> LogPredicate
+ Control.Eff.Concurrent.Pure: embedPdu :: EmbedProtocol protocol embeddedProtocol => Pdu embeddedProtocol r -> Pdu protocol r
+ Control.Eff.Concurrent.Pure: embeddedPdu :: EmbedProtocol protocol embeddedProtocol => Prism' (Pdu protocol result) (Pdu embeddedProtocol result)
+ Control.Eff.Concurrent.Pure: emergencySeverity :: Severity
+ Control.Eff.Concurrent.Pure: emptyObservers :: Observers o
+ Control.Eff.Concurrent.Pure: errorMessage :: HasCallStack => Text -> LogMessage
+ Control.Eff.Concurrent.Pure: errorMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
+ Control.Eff.Concurrent.Pure: errorSeverity :: Severity
+ Control.Eff.Concurrent.Pure: excludeLogMessages :: forall e a. Member Logs e => LogPredicate -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: executeAndResume :: forall q r v. (SetMember Process (Process q) r, HasCallStack) => Process q (ResumeProcess v) -> Eff r (Either (Interrupt 'Recoverable) v)
+ Control.Eff.Concurrent.Pure: executeAndResumeOrExit :: forall r q v. (SetMember Process (Process q) r, HasCallStack) => Process q (ResumeProcess v) -> Eff r v
+ Control.Eff.Concurrent.Pure: executeAndResumeOrThrow :: forall q r v. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => Process q (ResumeProcess v) -> Eff r v
+ Control.Eff.Concurrent.Pure: exitBecause :: forall r q a. (HasCallStack, SetMember Process (Process q) r) => Interrupt 'NoRecovery -> Eff r a
+ Control.Eff.Concurrent.Pure: exitNormally :: forall r q a. (HasCallStack, SetMember Process (Process q) r) => Eff r a
+ Control.Eff.Concurrent.Pure: exitOnInterrupt :: (HasCallStack, Member Interrupts r, SetMember Process (Process q) r) => Eff r a -> Eff r a
+ Control.Eff.Concurrent.Pure: exitWithError :: forall r q a. (HasCallStack, SetMember Process (Process q) r) => String -> Eff r a
+ Control.Eff.Concurrent.Pure: filterMessage :: Typeable a => (a -> Bool) -> MessageSelector a
+ Control.Eff.Concurrent.Pure: filteringLogWriter :: Monad e => LogPredicate -> LogWriter e -> LogWriter e
+ Control.Eff.Concurrent.Pure: flushMessages :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => Eff r [StrictDynamic]
+ Control.Eff.Concurrent.Pure: flushObservationQueue :: forall o r. (Member (ObservationQueueReader o) r, HasCallStack, MonadIO (Eff r), Typeable o, Member Logs r) => Eff r [o]
+ Control.Eff.Concurrent.Pure: foreverCheap :: Monad m => m a -> m ()
+ Control.Eff.Concurrent.Pure: forgetObserver :: (SetMember Process (Process q) r, HasCallStack, Member Interrupts r, Typeable o, NFData o, EmbedProtocol x (ObserverRegistry o), TangiblePdu x 'Asynchronous) => Observer o -> Endpoint x -> Eff r ()
+ Control.Eff.Concurrent.Pure: fromEndpoint :: forall protocol_aRHw protocol_aRV2. Iso (Endpoint protocol_aRHw) (Endpoint protocol_aRV2) ProcessId ProcessId
+ Control.Eff.Concurrent.Pure: fromPdu :: EmbedProtocol protocol embeddedProtocol => Pdu protocol r -> Maybe (Pdu embeddedProtocol r)
+ Control.Eff.Concurrent.Pure: fromProcessId :: Iso' ProcessId Int
+ Control.Eff.Concurrent.Pure: fromSomeExitReason :: SomeExitReason -> Either (Interrupt 'NoRecovery) (Interrupt 'Recoverable)
+ Control.Eff.Concurrent.Pure: fromStrictDynamic :: Typeable a => StrictDynamic -> Maybe a
+ Control.Eff.Concurrent.Pure: ftpDaemon :: Facility
+ Control.Eff.Concurrent.Pure: getProcessState :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r (Maybe (ProcessTitle, ProcessDetails, ProcessState))
+ Control.Eff.Concurrent.Pure: handleInterrupts :: (HasCallStack, Member Interrupts r) => (Interrupt 'Recoverable -> Eff r a) -> Eff r a -> Eff r a
+ Control.Eff.Concurrent.Pure: handleLogWriterEffect :: HandleLogWriter writerEff e => writerEff () -> Eff e ()
+ Control.Eff.Concurrent.Pure: handleObservations :: (HasCallStack, Typeable o, SetMember Process (Process q) r, NFData (Observer o)) => (o -> Eff r ()) -> Pdu (Observer o) 'Asynchronous -> Eff r ()
+ Control.Eff.Concurrent.Pure: handleObserverRegistration :: forall o q r. (HasCallStack, Typeable o, SetMember Process (Process q) r, Member (ObserverState o) r, Member Logs r) => Pdu (ObserverRegistry o) 'Asynchronous -> Eff r ()
+ Control.Eff.Concurrent.Pure: includeLogMessages :: forall e a. Member Logs e => LogPredicate -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: infoMessage :: HasCallStack => Text -> LogMessage
+ Control.Eff.Concurrent.Pure: infoMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
+ Control.Eff.Concurrent.Pure: informationalSeverity :: Severity
+ Control.Eff.Concurrent.Pure: interceptLogMessages :: forall r b. Member Logs r => (LogMessage -> Eff r LogMessage) -> Eff r b -> Eff r b
+ Control.Eff.Concurrent.Pure: interrupt :: (HasCallStack, Member Interrupts r) => Interrupt 'Recoverable -> Eff r a
+ Control.Eff.Concurrent.Pure: interruptToExit :: Interrupt 'Recoverable -> Interrupt 'NoRecovery
+ Control.Eff.Concurrent.Pure: ioHandleLogWriter :: HasCallStack => Handle -> LogWriter IO
+ Control.Eff.Concurrent.Pure: isCrash :: Interrupt x -> Bool
+ Control.Eff.Concurrent.Pure: isProcessAlive :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r Bool
+ Control.Eff.Concurrent.Pure: isProcessDownInterrupt :: Maybe ProcessId -> Interrupt r -> Bool
+ Control.Eff.Concurrent.Pure: isRecoverable :: Interrupt x -> Bool
+ Control.Eff.Concurrent.Pure: kernelMessages :: Facility
+ Control.Eff.Concurrent.Pure: liftWriteLogMessage :: (HandleLogWriter writerEff e, SetMember LogWriterReader (LogWriterReader writerEff) e) => LogMessage -> Eff e ()
+ Control.Eff.Concurrent.Pure: linePrinterSubsystem :: Facility
+ Control.Eff.Concurrent.Pure: linkProcess :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r ()
+ Control.Eff.Concurrent.Pure: lmAppName :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmFacility :: Functor f => (Facility -> f Facility) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmHostname :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmMessage :: Functor f => (Text -> f Text) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmMessageId :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmMessageStartsWith :: Text -> LogPredicate
+ Control.Eff.Concurrent.Pure: lmProcessId :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmSeverity :: Functor f => (Severity -> f Severity) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmSeverityIs :: Severity -> LogPredicate
+ Control.Eff.Concurrent.Pure: lmSeverityIsAtLeast :: Severity -> LogPredicate
+ Control.Eff.Concurrent.Pure: lmSrcLoc :: Functor f => (Maybe SrcLoc -> f (Maybe SrcLoc)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmStructuredData :: Functor f => ([StructuredDataElement] -> f [StructuredDataElement]) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmThreadId :: Functor f => (Maybe ThreadId -> f (Maybe ThreadId)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: lmTimestamp :: Functor f => (Maybe UTCTime -> f (Maybe UTCTime)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.Pure: local0 :: Facility
+ Control.Eff.Concurrent.Pure: local1 :: Facility
+ Control.Eff.Concurrent.Pure: local2 :: Facility
+ Control.Eff.Concurrent.Pure: local3 :: Facility
+ Control.Eff.Concurrent.Pure: local4 :: Facility
+ Control.Eff.Concurrent.Pure: local5 :: Facility
+ Control.Eff.Concurrent.Pure: local6 :: Facility
+ Control.Eff.Concurrent.Pure: local7 :: Facility
+ Control.Eff.Concurrent.Pure: localLogWriterReader :: forall h e a. SetMember LogWriterReader (LogWriterReader h) e => (LogWriter h -> LogWriter h) -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: logAlert :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logAlert' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.Pure: logAlertFacility :: Facility
+ Control.Eff.Concurrent.Pure: logAuditFacility :: Facility
+ Control.Eff.Concurrent.Pure: logCritical :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logCritical' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.Pure: logDebug :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logDebug' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.Pure: logEmergency :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logEmergency' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.Pure: logError :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logError' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.Pure: logInfo :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logInfo' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.Pure: logInterrupts :: forall r. (Member Logs r, HasCallStack, Member Interrupts r) => Eff r () -> Eff r ()
+ Control.Eff.Concurrent.Pure: logMsg :: forall e. (HasCallStack, Member Logs e) => LogMessage -> Eff e ()
+ Control.Eff.Concurrent.Pure: logNotice :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logNotice' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.Pure: logProcessExit :: forall e x. (Member Logs e, HasCallStack) => Interrupt x -> Eff e ()
+ Control.Eff.Concurrent.Pure: logWarning :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logWarning' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.Pure: logWithSeverity :: forall e. (HasCallStack, Member Logs e) => Severity -> Text -> Eff e ()
+ Control.Eff.Concurrent.Pure: logWithSeverity' :: forall e. (HasCallStack, Member Logs e) => Severity -> String -> Eff e ()
+ Control.Eff.Concurrent.Pure: mailSystem :: Facility
+ Control.Eff.Concurrent.Pure: makeReference :: (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => Eff r Int
+ Control.Eff.Concurrent.Pure: manageObservers :: Eff (ObserverState o : r) a -> Eff r a
+ Control.Eff.Concurrent.Pure: mappingLogWriter :: (LogMessage -> LogMessage) -> LogWriter e -> LogWriter e
+ Control.Eff.Concurrent.Pure: mappingLogWriterM :: Monad e => (LogMessage -> e LogMessage) -> LogWriter e -> LogWriter e
+ Control.Eff.Concurrent.Pure: mergeEitherInterruptAndExitReason :: Either (Interrupt 'Recoverable) (Interrupt 'NoRecovery) -> Interrupt 'NoRecovery
+ Control.Eff.Concurrent.Pure: mkLogMessageTimeRenderer :: String -> LogMessageTimeRenderer
+ Control.Eff.Concurrent.Pure: mkLogWriterIO :: HasCallStack => (LogMessage -> IO ()) -> LogWriter IO
+ Control.Eff.Concurrent.Pure: modifyLogPredicate :: forall e b. (Member Logs e, HasCallStack) => (LogPredicate -> LogPredicate) -> Eff e b -> Eff e b
+ Control.Eff.Concurrent.Pure: modifyLogWriter :: forall h e a. LogsTo h e => (LogWriter h -> LogWriter h) -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: monitor :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r MonitorReference
+ Control.Eff.Concurrent.Pure: networkNewsSubsystem :: Facility
+ Control.Eff.Concurrent.Pure: newtype CaptureLogs a
+ Control.Eff.Concurrent.Pure: newtype Endpoint protocol
+ Control.Eff.Concurrent.Pure: newtype Facility
+ Control.Eff.Concurrent.Pure: newtype LogWriter writerM
+ Control.Eff.Concurrent.Pure: newtype ProcessId
+ Control.Eff.Concurrent.Pure: newtype PureLogWriter a
+ Control.Eff.Concurrent.Pure: newtype Serializer message
+ Control.Eff.Concurrent.Pure: noLogMessages :: LogPredicate
+ Control.Eff.Concurrent.Pure: noOpLogWriter :: Applicative m => LogWriter m
+ Control.Eff.Concurrent.Pure: noticeSeverity :: Severity
+ Control.Eff.Concurrent.Pure: ntpSubsystem :: Facility
+ Control.Eff.Concurrent.Pure: observed :: forall o r q. (SetMember Process (Process q) r, Member (ObserverState o) r, Member Interrupts r, TangibleObserver o) => o -> Eff r ()
+ Control.Eff.Concurrent.Pure: prefixLogMessagesWith :: Text -> LogMessage -> LogMessage
+ Control.Eff.Concurrent.Pure: printLogMessage :: LogMessage -> IO ()
+ Control.Eff.Concurrent.Pure: provideInterrupts :: HasCallStack => Eff (Interrupts : r) a -> Eff r (Either (Interrupt 'Recoverable) a)
+ Control.Eff.Concurrent.Pure: provideInterruptsShutdown :: forall e a. Eff (Processes e) a -> Eff (SafeProcesses e) a
+ Control.Eff.Concurrent.Pure: proxyAsEndpoint :: proxy protocol -> ProcessId -> Endpoint protocol
+ Control.Eff.Concurrent.Pure: readObservationQueue :: forall o r. (Member (ObservationQueueReader o) r, HasCallStack, MonadIO (Eff r), Typeable o, Member Logs r) => Eff r o
+ Control.Eff.Concurrent.Pure: receiveAfter :: forall a r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r, Typeable a, NFData a, Show a) => Timeout -> Eff r (Maybe a)
+ Control.Eff.Concurrent.Pure: receiveAnyLoop :: forall r q endOfLoopResult. (SetMember Process (Process q) r, HasCallStack) => (Either (Interrupt 'Recoverable) StrictDynamic -> Eff r (Maybe endOfLoopResult)) -> Eff r endOfLoopResult
+ Control.Eff.Concurrent.Pure: receiveAnyMessage :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => Eff r StrictDynamic
+ Control.Eff.Concurrent.Pure: receiveLoop :: forall r q a endOfLoopResult. (SetMember Process (Process q) r, HasCallStack, NFData a, Typeable a) => (Either (Interrupt 'Recoverable) a -> Eff r (Maybe endOfLoopResult)) -> Eff r endOfLoopResult
+ Control.Eff.Concurrent.Pure: receiveMessage :: forall a r q. (HasCallStack, Typeable a, NFData a, Show a, SetMember Process (Process q) r, Member Interrupts r) => Eff r a
+ Control.Eff.Concurrent.Pure: receiveSelectedAfter :: forall a r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r, Show a) => MessageSelector a -> Timeout -> Eff r (Either TimerElapsed a)
+ Control.Eff.Concurrent.Pure: receiveSelectedLoop :: forall r q a endOfLoopResult. (SetMember Process (Process q) r, HasCallStack) => MessageSelector a -> (Either (Interrupt 'Recoverable) a -> Eff r (Maybe endOfLoopResult)) -> Eff r endOfLoopResult
+ Control.Eff.Concurrent.Pure: receiveSelectedMessage :: forall r q a. (HasCallStack, Show a, SetMember Process (Process q) r, Member Interrupts r) => MessageSelector a -> Eff r a
+ Control.Eff.Concurrent.Pure: receiveSelectedWithMonitorAfter :: forall a r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r, Show a) => ProcessId -> MessageSelector a -> Timeout -> Eff r (Either (Either ProcessDown TimerElapsed) a)
+ Control.Eff.Concurrent.Pure: receiveWithMonitor :: (HasCallStack, Member Interrupts r, SetMember Process (Process q) r, Member Interrupts r, Typeable a, Show a) => ProcessId -> MessageSelector a -> Eff r (Either ProcessDown a)
+ Control.Eff.Concurrent.Pure: registerObserver :: (SetMember Process (Process q) r, HasCallStack, Member Interrupts r, TangibleObserver o, EmbedProtocol x (ObserverRegistry o), TangiblePdu x 'Asynchronous) => Observer o -> Endpoint x -> Eff r ()
+ Control.Eff.Concurrent.Pure: renderLogMessageBody :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderLogMessageBodyFixWidth :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderLogMessageBodyNoLocation :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderLogMessageConsoleLog :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderLogMessageSrcLoc :: LogMessageRenderer (Maybe Text)
+ Control.Eff.Concurrent.Pure: renderLogMessageSyslog :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderMaybeLogMessageLens :: Text -> Getter LogMessage (Maybe Text) -> LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderRFC3164 :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderRFC3164WithRFC5424Timestamps :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderRFC3164WithTimestamp :: LogMessageTimeRenderer -> LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderRFC5424 :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderRFC5424Header :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderRFC5424NoLocation :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: renderSyslogSeverityAndFacility :: LogMessageRenderer Text
+ Control.Eff.Concurrent.Pure: replicateCheapM_ :: Monad m => Int -> m a -> m ()
+ Control.Eff.Concurrent.Pure: respondToLogMessage :: forall r b. Member Logs r => (LogMessage -> Eff r ()) -> Eff r b -> Eff r b
+ Control.Eff.Concurrent.Pure: rfc3164Timestamp :: LogMessageTimeRenderer
+ Control.Eff.Concurrent.Pure: rfc5424NoZTimestamp :: LogMessageTimeRenderer
+ Control.Eff.Concurrent.Pure: rfc5424Timestamp :: LogMessageTimeRenderer
+ Control.Eff.Concurrent.Pure: runCaptureLogWriter :: Eff (CaptureLogWriter : e) a -> Eff e (a, [LogMessage])
+ Control.Eff.Concurrent.Pure: runEndpointReader :: HasCallStack => Endpoint o -> Eff (EndpointReader o : r) a -> Eff r a
+ Control.Eff.Concurrent.Pure: runLogWriterReader :: LogWriter h -> Eff (LogWriterReader h : e) a -> Eff e a
+ Control.Eff.Concurrent.Pure: runLogs :: forall h e b. LogsTo h (Logs : e) => LogPredicate -> Eff (Logs : e) b -> Eff e b
+ Control.Eff.Concurrent.Pure: schedule :: Eff Effects a -> Either (Interrupt 'NoRecovery) a
+ Control.Eff.Concurrent.Pure: sdElementId :: Functor f => (Text -> f Text) -> StructuredDataElement -> f StructuredDataElement
+ Control.Eff.Concurrent.Pure: sdElementParameters :: Functor f => ([SdParameter] -> f [SdParameter]) -> StructuredDataElement -> f StructuredDataElement
+ Control.Eff.Concurrent.Pure: securityAuthorizationMessages10 :: Facility
+ Control.Eff.Concurrent.Pure: securityAuthorizationMessages4 :: Facility
+ Control.Eff.Concurrent.Pure: selectAnyMessage :: MessageSelector StrictDynamic
+ Control.Eff.Concurrent.Pure: selectDynamicMessage :: (StrictDynamic -> Maybe a) -> MessageSelector a
+ Control.Eff.Concurrent.Pure: selectMessage :: Typeable t => MessageSelector t
+ Control.Eff.Concurrent.Pure: selectMessageWith :: Typeable a => (a -> Maybe b) -> MessageSelector b
+ Control.Eff.Concurrent.Pure: selectProcessDown :: MonitorReference -> MessageSelector ProcessDown
+ Control.Eff.Concurrent.Pure: selectTimerElapsed :: TimerReference -> MessageSelector TimerElapsed
+ Control.Eff.Concurrent.Pure: self :: (HasCallStack, SetMember Process (Process q) r) => Eff r ProcessId
+ Control.Eff.Concurrent.Pure: sendAfter :: forall r q message. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r, Typeable message, NFData message) => ProcessId -> Timeout -> (TimerReference -> message) -> Eff r TimerReference
+ Control.Eff.Concurrent.Pure: sendAnyMessage :: forall r q. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => ProcessId -> StrictDynamic -> Eff r ()
+ Control.Eff.Concurrent.Pure: sendInterrupt :: forall r q. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => ProcessId -> Interrupt 'Recoverable -> Eff r ()
+ Control.Eff.Concurrent.Pure: sendMessage :: forall r q o. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r, Typeable o, NFData o) => ProcessId -> o -> Eff r ()
+ Control.Eff.Concurrent.Pure: sendShutdown :: forall r q. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => ProcessId -> Interrupt 'NoRecovery -> Eff r ()
+ Control.Eff.Concurrent.Pure: setCallStack :: CallStack -> LogMessage -> LogMessage
+ Control.Eff.Concurrent.Pure: setLogMessageHostname :: LogMessage -> IO LogMessage
+ Control.Eff.Concurrent.Pure: setLogMessageThreadId :: LogMessage -> IO LogMessage
+ Control.Eff.Concurrent.Pure: setLogMessageTimestamp :: LogMessage -> IO LogMessage
+ Control.Eff.Concurrent.Pure: setLogPredicate :: forall r b. (Member Logs r, HasCallStack) => LogPredicate -> Eff r b -> Eff r b
+ Control.Eff.Concurrent.Pure: setLogWriter :: forall h e a. LogsTo h e => LogWriter h -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: spawn :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.Pure: spawnLink :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.Pure: spawnLinkObservationQueueWriter :: forall o q h. (TangibleObserver o, TangiblePdu (Observer o) 'Asynchronous, Member Logs q, Lifted IO q, LogsTo h (Processes q), HasCallStack) => ObservationQueue o -> Eff (Processes q) (Observer o)
+ Control.Eff.Concurrent.Pure: spawnRaw :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (SafeProcesses q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.Pure: spawnRaw_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (SafeProcesses q) () -> Eff r ()
+ Control.Eff.Concurrent.Pure: spawn_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ()
+ Control.Eff.Concurrent.Pure: startTimer :: forall r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => Timeout -> Eff r TimerReference
+ Control.Eff.Concurrent.Pure: stdoutLogWriter :: LogMessageRenderer Text -> LogWriter IO
+ Control.Eff.Concurrent.Pure: suppressTimestamp :: LogMessageTimeRenderer
+ Control.Eff.Concurrent.Pure: systemDaemons :: Facility
+ Control.Eff.Concurrent.Pure: toCrashReason :: Interrupt x -> Maybe Text
+ Control.Eff.Concurrent.Pure: toExitRecovery :: Interrupt r -> ExitRecovery
+ Control.Eff.Concurrent.Pure: toExitSeverity :: Interrupt e -> ExitSeverity
+ Control.Eff.Concurrent.Pure: toLogMessage :: ToLogMessage a => a -> LogMessage
+ Control.Eff.Concurrent.Pure: toObserver :: TangibleObserver o => Endpoint (Observer o) -> Observer o
+ Control.Eff.Concurrent.Pure: toObserverFor :: (TangibleObserver o, Typeable a, TangiblePdu a 'Asynchronous) => (o -> Pdu a 'Asynchronous) -> Endpoint a -> Observer o
+ Control.Eff.Concurrent.Pure: toStrictDynamic :: (Typeable a, NFData a) => a -> StrictDynamic
+ Control.Eff.Concurrent.Pure: tryReadObservationQueue :: forall o r. (Member (ObservationQueueReader o) r, HasCallStack, MonadIO (Eff r), Typeable o, Member Logs r) => Eff r (Maybe o)
+ Control.Eff.Concurrent.Pure: tryUninterrupted :: (HasCallStack, Member Interrupts r) => Eff r a -> Eff r (Either (Interrupt 'Recoverable) a)
+ Control.Eff.Concurrent.Pure: type BaseEffects = PureBaseEffects
+ Control.Eff.Concurrent.Pure: type CaptureLogWriter = Writer LogMessage
+ Control.Eff.Concurrent.Pure: type Effects = PureEffects
+ Control.Eff.Concurrent.Pure: type EndpointReader o = Reader (Endpoint o)
+ Control.Eff.Concurrent.Pure: type HasBaseEffects e = HasPureBaseEffects e
+ Control.Eff.Concurrent.Pure: type Interrupts = Exc (Interrupt 'Recoverable)
+ Control.Eff.Concurrent.Pure: type LogIo e = (LogsTo IO e, Lifted IO e)
+ Control.Eff.Concurrent.Pure: type LogMessageRenderer a = LogMessage -> a
+ Control.Eff.Concurrent.Pure: type LogPredicate = LogMessage -> Bool
+ Control.Eff.Concurrent.Pure: type LoggingAndIo = '[Logs, LogWriterReader IO, Lift IO]
+ Control.Eff.Concurrent.Pure: type LogsTo h e = (Member Logs e, HandleLogWriter h e, SetMember LogWriterReader (LogWriterReader h) e)
+ Control.Eff.Concurrent.Pure: type ObservationQueueReader a = Reader (ObservationQueue a)
+ Control.Eff.Concurrent.Pure: type ObserverState o = State (Observers o)
+ Control.Eff.Concurrent.Pure: type Processes e = Interrupts : SafeProcesses e
+ Control.Eff.Concurrent.Pure: type RecoverableInterrupt = Interrupt 'Recoverable
+ Control.Eff.Concurrent.Pure: type SafeEffects = PureSafeEffects
+ Control.Eff.Concurrent.Pure: type SafeProcesses r = Process r : r
+ Control.Eff.Concurrent.Pure: type ServesProtocol o r q = (Typeable o, SetMember Process (Process q) r, Member (EndpointReader o) r)
+ Control.Eff.Concurrent.Pure: type Tangible i = (NFData i, Typeable i, Show i)
+ Control.Eff.Concurrent.Pure: type TangiblePdu p r = (Typeable p, Typeable r, Tangible (Pdu p r))
+ Control.Eff.Concurrent.Pure: type family ProtocolReply (s :: Synchronicity)
+ Control.Eff.Concurrent.Pure: unlinkProcess :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r ()
+ Control.Eff.Concurrent.Pure: unwrapStrictDynamic :: StrictDynamic -> Dynamic
+ Control.Eff.Concurrent.Pure: updateProcessDetails :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessDetails -> Eff r ()
+ Control.Eff.Concurrent.Pure: userLevelMessages :: Facility
+ Control.Eff.Concurrent.Pure: uucpSubsystem :: Facility
+ Control.Eff.Concurrent.Pure: warningSeverity :: Severity
+ Control.Eff.Concurrent.Pure: withAsyncLogWriter :: (LogsTo IO e, Lifted IO e, MonadBaseControl IO (Eff e), Integral len) => len -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: withAsyncLogging :: (Lifted IO e, MonadBaseControl IO (Eff e), Integral len) => LogWriter IO -> len -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: withConsoleLogWriter :: (LogsTo IO e, Lifted IO e) => Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: withConsoleLogging :: Lifted IO e => Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: withFileLogWriter :: (Lifted IO e, LogsTo IO e, MonadBaseControl IO (Eff e)) => FilePath -> Eff e b -> Eff e b
+ Control.Eff.Concurrent.Pure: withFileLogging :: (Lifted IO e, MonadBaseControl IO (Eff e)) => FilePath -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: withIoLogging :: SetMember Lift (Lift IO) e => LogWriter IO -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: withLogging :: forall h e a. (Applicative h, LogsTo h (Logs : (LogWriterReader h : e))) => LogWriter h -> Eff (Logs : (LogWriterReader h : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: withMonitor :: (HasCallStack, Member Interrupts r, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> (MonitorReference -> Eff r a) -> Eff r a
+ Control.Eff.Concurrent.Pure: withObservationQueue :: forall o b e len. (HasCallStack, Typeable o, Show o, Member Logs e, Lifted IO e, Integral len, Member Interrupts e) => len -> Eff (ObservationQueueReader o : e) b -> Eff e b
+ Control.Eff.Concurrent.Pure: withSomeLogging :: forall h e a. (Applicative h, LogsTo h (Logs : (LogWriterReader h : e))) => Eff (Logs : (LogWriterReader h : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: withTraceLogWriter :: forall h e a. (Monad h, LogsTo h e) => Eff e a -> Eff e a
+ Control.Eff.Concurrent.Pure: withTraceLogging :: Lifted IO e => Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: withUDPLogWriter :: (Lifted IO e, LogsTo IO e, MonadBaseControl IO (Eff e), HasCallStack) => (LogMessage -> Text) -> String -> String -> Eff e b -> Eff e b
+ Control.Eff.Concurrent.Pure: withUDPLogging :: (HasCallStack, MonadBaseControl IO (Eff e), Lifted IO e) => (LogMessage -> Text) -> String -> String -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: withUnixSocketLogWriter :: (Lifted IO e, LogsTo IO e, MonadBaseControl IO (Eff e), HasCallStack) => LogMessageRenderer Text -> FilePath -> Eff e b -> Eff e b
+ Control.Eff.Concurrent.Pure: withUnixSocketLogging :: (HasCallStack, MonadBaseControl IO (Eff e), Lifted IO e) => LogMessageRenderer Text -> FilePath -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.Pure: yieldProcess :: forall r q. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: Asynchronous :: Synchronicity
+ Control.Eff.Concurrent.SingleThreaded: Crash :: ExitSeverity
+ Control.Eff.Concurrent.SingleThreaded: Endpoint :: ProcessId -> Endpoint protocol
+ Control.Eff.Concurrent.SingleThreaded: Facility :: Int -> Facility
+ Control.Eff.Concurrent.SingleThreaded: MkCaptureLogs :: Eff '[CaptureLogWriter] a -> CaptureLogs a
+ Control.Eff.Concurrent.SingleThreaded: MkLogMessage :: !Facility -> !Severity -> Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> [StructuredDataElement] -> Maybe ThreadId -> Maybe SrcLoc -> Text -> LogMessage
+ Control.Eff.Concurrent.SingleThreaded: MkLogWriter :: (LogMessage -> writerM ()) -> LogWriter writerM
+ Control.Eff.Concurrent.SingleThreaded: MkPureLogWriter :: Identity a -> PureLogWriter a
+ Control.Eff.Concurrent.SingleThreaded: MkSdParameter :: !Text -> !Text -> SdParameter
+ Control.Eff.Concurrent.SingleThreaded: MkSerializer :: (message -> StrictDynamic) -> Serializer message
+ Control.Eff.Concurrent.SingleThreaded: MonitorReference :: Int -> ProcessId -> MonitorReference
+ Control.Eff.Concurrent.SingleThreaded: NoRecovery :: ExitRecovery
+ Control.Eff.Concurrent.SingleThreaded: NormalExit :: ExitSeverity
+ Control.Eff.Concurrent.SingleThreaded: ProcessBooting :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusy :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusyDemonitoring :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusyLinking :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusyMonitoring :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusyReceiving :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusySending :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusySendingInterrupt :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusySendingShutdown :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusyUnlinking :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessBusyUpdatingDetails :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessDown :: !MonitorReference -> !SomeExitReason -> ProcessDown
+ Control.Eff.Concurrent.SingleThreaded: ProcessId :: Int -> ProcessId
+ Control.Eff.Concurrent.SingleThreaded: ProcessIdle :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessInterrupted :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: ProcessShuttingDown :: ProcessState
+ Control.Eff.Concurrent.SingleThreaded: Recoverable :: ExitRecovery
+ Control.Eff.Concurrent.SingleThreaded: SdElement :: !Text -> ![SdParameter] -> StructuredDataElement
+ Control.Eff.Concurrent.SingleThreaded: Synchronous :: Type -> Synchronicity
+ Control.Eff.Concurrent.SingleThreaded: [Demonitor] :: MonitorReference -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.SingleThreaded: [ErrorInterrupt] :: String -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.SingleThreaded: [ExitNormally] :: Interrupt 'NoRecovery
+ Control.Eff.Concurrent.SingleThreaded: [ExitProcessCancelled] :: Interrupt 'NoRecovery
+ Control.Eff.Concurrent.SingleThreaded: [ExitUnhandledError] :: Text -> Interrupt 'NoRecovery
+ Control.Eff.Concurrent.SingleThreaded: [FlushMessages] :: Process r (ResumeProcess [StrictDynamic])
+ Control.Eff.Concurrent.SingleThreaded: [GetProcessState] :: ProcessId -> Process r (ResumeProcess (Maybe (ProcessTitle, ProcessDetails, ProcessState)))
+ Control.Eff.Concurrent.SingleThreaded: [Interrupted] :: Interrupt 'Recoverable -> ResumeProcess v
+ Control.Eff.Concurrent.SingleThreaded: [Link] :: ProcessId -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.SingleThreaded: [LinkedProcessCrashed] :: ProcessId -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.SingleThreaded: [MakeReference] :: Process r (ResumeProcess Int)
+ Control.Eff.Concurrent.SingleThreaded: [Monitor] :: ProcessId -> Process r (ResumeProcess MonitorReference)
+ Control.Eff.Concurrent.SingleThreaded: [NormalExitRequested] :: Interrupt 'Recoverable
+ Control.Eff.Concurrent.SingleThreaded: [Observer] :: (Tangible o, TangiblePdu p 'Asynchronous, Tangible (Endpoint p), Typeable p) => (o -> Maybe (Pdu p 'Asynchronous)) -> Endpoint p -> Observer o
+ Control.Eff.Concurrent.SingleThreaded: [OtherProcessNotRunning] :: ProcessId -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.SingleThreaded: [ReceiveSelectedMessage] :: forall r a. MessageSelector a -> Process r (ResumeProcess a)
+ Control.Eff.Concurrent.SingleThreaded: [ResumeWith] :: a -> ResumeProcess a
+ Control.Eff.Concurrent.SingleThreaded: [SelfPid] :: Process r (ResumeProcess ProcessId)
+ Control.Eff.Concurrent.SingleThreaded: [SendInterrupt] :: ProcessId -> Interrupt 'Recoverable -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.SingleThreaded: [SendMessage] :: ProcessId -> StrictDynamic -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.SingleThreaded: [SendShutdown] :: ProcessId -> Interrupt 'NoRecovery -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.SingleThreaded: [Shutdown] :: Interrupt 'NoRecovery -> Process r a
+ Control.Eff.Concurrent.SingleThreaded: [SomeExitReason] :: Interrupt x -> SomeExitReason
+ Control.Eff.Concurrent.SingleThreaded: [SpawnLink] :: ProcessTitle -> Eff (Process r : r) () -> Process r (ResumeProcess ProcessId)
+ Control.Eff.Concurrent.SingleThreaded: [Spawn] :: ProcessTitle -> Eff (Process r : r) () -> Process r (ResumeProcess ProcessId)
+ Control.Eff.Concurrent.SingleThreaded: [TimeoutInterrupt] :: String -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.SingleThreaded: [Unlink] :: ProcessId -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.SingleThreaded: [UpdateProcessDetails] :: ProcessDetails -> Process r (ResumeProcess ())
+ Control.Eff.Concurrent.SingleThreaded: [YieldProcess] :: Process r (ResumeProcess ())
+ Control.Eff.Concurrent.SingleThreaded: [_fromEndpoint] :: Endpoint protocol -> ProcessId
+ Control.Eff.Concurrent.SingleThreaded: [_fromProcessId] :: ProcessId -> Int
+ Control.Eff.Concurrent.SingleThreaded: [_lmAppName] :: LogMessage -> Maybe Text
+ Control.Eff.Concurrent.SingleThreaded: [_lmFacility] :: LogMessage -> !Facility
+ Control.Eff.Concurrent.SingleThreaded: [_lmHostname] :: LogMessage -> Maybe Text
+ Control.Eff.Concurrent.SingleThreaded: [_lmMessageId] :: LogMessage -> Maybe Text
+ Control.Eff.Concurrent.SingleThreaded: [_lmMessage] :: LogMessage -> Text
+ Control.Eff.Concurrent.SingleThreaded: [_lmProcessId] :: LogMessage -> Maybe Text
+ Control.Eff.Concurrent.SingleThreaded: [_lmSeverity] :: LogMessage -> !Severity
+ Control.Eff.Concurrent.SingleThreaded: [_lmSrcLoc] :: LogMessage -> Maybe SrcLoc
+ Control.Eff.Concurrent.SingleThreaded: [_lmStructuredData] :: LogMessage -> [StructuredDataElement]
+ Control.Eff.Concurrent.SingleThreaded: [_lmThreadId] :: LogMessage -> Maybe ThreadId
+ Control.Eff.Concurrent.SingleThreaded: [_lmTimestamp] :: LogMessage -> Maybe UTCTime
+ Control.Eff.Concurrent.SingleThreaded: [_sdElementId] :: StructuredDataElement -> !Text
+ Control.Eff.Concurrent.SingleThreaded: [_sdElementParameters] :: StructuredDataElement -> ![SdParameter]
+ Control.Eff.Concurrent.SingleThreaded: [downReason] :: ProcessDown -> !SomeExitReason
+ Control.Eff.Concurrent.SingleThreaded: [downReference] :: ProcessDown -> !MonitorReference
+ Control.Eff.Concurrent.SingleThreaded: [fromFacility] :: Facility -> Int
+ Control.Eff.Concurrent.SingleThreaded: [monitorIndex] :: MonitorReference -> Int
+ Control.Eff.Concurrent.SingleThreaded: [monitoredProcess] :: MonitorReference -> ProcessId
+ Control.Eff.Concurrent.SingleThreaded: [runLogWriter] :: LogWriter writerM -> LogMessage -> writerM ()
+ Control.Eff.Concurrent.SingleThreaded: [runPureLogWriter] :: PureLogWriter a -> Identity a
+ Control.Eff.Concurrent.SingleThreaded: [runSerializer] :: Serializer message -> message -> StrictDynamic
+ Control.Eff.Concurrent.SingleThreaded: [unCaptureLogs] :: CaptureLogs a -> Eff '[CaptureLogWriter] a
+ Control.Eff.Concurrent.SingleThreaded: addLogWriter :: forall h e a. (HasCallStack, LogsTo h e, Monad h) => LogWriter h -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: alertSeverity :: Severity
+ Control.Eff.Concurrent.SingleThreaded: allLogMessages :: LogPredicate
+ Control.Eff.Concurrent.SingleThreaded: asEndpoint :: forall protocol. ProcessId -> Endpoint protocol
+ Control.Eff.Concurrent.SingleThreaded: askEndpoint :: Member (EndpointReader o) e => Eff e (Endpoint o)
+ Control.Eff.Concurrent.SingleThreaded: askLogPredicate :: forall e. Member Logs e => Eff e LogPredicate
+ Control.Eff.Concurrent.SingleThreaded: askLogWriter :: SetMember LogWriterReader (LogWriterReader h) e => Eff e (LogWriter h)
+ Control.Eff.Concurrent.SingleThreaded: becauseProcessIsDown :: ProcessDown -> Interrupt 'Recoverable
+ Control.Eff.Concurrent.SingleThreaded: call :: forall result protocol' protocol r q. (SetMember Process (Process q) r, Member Interrupts r, TangiblePdu protocol' ( 'Synchronous result), TangiblePdu protocol ( 'Synchronous result), EmbedProtocol protocol' protocol, Tangible result, HasCallStack) => Endpoint protocol' -> Pdu protocol ( 'Synchronous result) -> Eff r result
+ Control.Eff.Concurrent.SingleThreaded: callEndpointReader :: forall reply o r q. (ServesProtocol o r q, HasCallStack, Tangible reply, TangiblePdu o ( 'Synchronous reply), Member Interrupts r) => Pdu o ( 'Synchronous reply) -> Eff r reply
+ Control.Eff.Concurrent.SingleThreaded: callWithTimeout :: forall result protocol' protocol r q. (SetMember Process (Process q) r, Member Interrupts r, TangiblePdu protocol' ( 'Synchronous result), TangiblePdu protocol ( 'Synchronous result), EmbedProtocol protocol' protocol, Tangible result, Member Logs r, Lifted IO q, Lifted IO r, HasCallStack) => Endpoint protocol' -> Pdu protocol ( 'Synchronous result) -> Timeout -> Eff r result
+ Control.Eff.Concurrent.SingleThreaded: cancelTimer :: forall r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => TimerReference -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: captureLogWriter :: LogWriter CaptureLogs
+ Control.Eff.Concurrent.SingleThreaded: cast :: forall o' o r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r, TangiblePdu o' 'Asynchronous, TangiblePdu o 'Asynchronous, EmbedProtocol o' o) => Endpoint o' -> Pdu o 'Asynchronous -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: castEndpointReader :: forall o r q. (ServesProtocol o r q, HasCallStack, Member Interrupts r, TangiblePdu o 'Asynchronous) => Pdu o 'Asynchronous -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: censorLogs :: LogsTo h e => (LogMessage -> LogMessage) -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: censorLogsM :: (LogsTo h e, Monad h) => (LogMessage -> h LogMessage) -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: class EmbedProtocol protocol embeddedProtocol
+ Control.Eff.Concurrent.SingleThreaded: class HandleLogWriter (writerEff :: Type -> Type) e
+ Control.Eff.Concurrent.SingleThreaded: class ToLogMessage a
+ Control.Eff.Concurrent.SingleThreaded: clockDaemon :: Facility
+ Control.Eff.Concurrent.SingleThreaded: clockDaemon2 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: consoleLogWriter :: LogWriter IO
+ Control.Eff.Concurrent.SingleThreaded: criticalSeverity :: Severity
+ Control.Eff.Concurrent.SingleThreaded: data ExitRecovery
+ Control.Eff.Concurrent.SingleThreaded: data ExitSeverity
+ Control.Eff.Concurrent.SingleThreaded: data Interrupt (t :: ExitRecovery)
+ Control.Eff.Concurrent.SingleThreaded: data LogMessage
+ Control.Eff.Concurrent.SingleThreaded: data LogMessageTimeRenderer
+ Control.Eff.Concurrent.SingleThreaded: data LogWriterReader h v
+ Control.Eff.Concurrent.SingleThreaded: data Logs v
+ Control.Eff.Concurrent.SingleThreaded: data MessageSelector a
+ Control.Eff.Concurrent.SingleThreaded: data MonitorReference
+ Control.Eff.Concurrent.SingleThreaded: data ObservationQueue a
+ Control.Eff.Concurrent.SingleThreaded: data Observer o
+ Control.Eff.Concurrent.SingleThreaded: data ObserverRegistry o
+ Control.Eff.Concurrent.SingleThreaded: data Observers o
+ Control.Eff.Concurrent.SingleThreaded: data Process (r :: [Type -> Type]) b
+ Control.Eff.Concurrent.SingleThreaded: data ProcessDown
+ Control.Eff.Concurrent.SingleThreaded: data ProcessState
+ Control.Eff.Concurrent.SingleThreaded: data ResumeProcess v
+ Control.Eff.Concurrent.SingleThreaded: data SdParameter
+ Control.Eff.Concurrent.SingleThreaded: data Severity
+ Control.Eff.Concurrent.SingleThreaded: data SomeExitReason
+ Control.Eff.Concurrent.SingleThreaded: data StrictDynamic
+ Control.Eff.Concurrent.SingleThreaded: data StructuredDataElement
+ Control.Eff.Concurrent.SingleThreaded: data Synchronicity
+ Control.Eff.Concurrent.SingleThreaded: data Timeout
+ Control.Eff.Concurrent.SingleThreaded: data TimerElapsed
+ Control.Eff.Concurrent.SingleThreaded: data TimerReference
+ Control.Eff.Concurrent.SingleThreaded: data family Pdu (protocol :: Type) (reply :: Synchronicity)
+ Control.Eff.Concurrent.SingleThreaded: debugMessage :: HasCallStack => Text -> LogMessage
+ Control.Eff.Concurrent.SingleThreaded: debugMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
+ Control.Eff.Concurrent.SingleThreaded: debugSeverity :: Severity
+ Control.Eff.Concurrent.SingleThreaded: debugTraceLogWriter :: forall h. Monad h => LogMessageRenderer Text -> LogWriter h
+ Control.Eff.Concurrent.SingleThreaded: defaultIoLogWriter :: Text -> Facility -> LogWriter IO -> LogWriter IO
+ Control.Eff.Concurrent.SingleThreaded: defaultMain :: HasCallStack => Eff EffectsIo () -> IO ()
+ Control.Eff.Concurrent.SingleThreaded: defaultMainWithLogWriter :: HasCallStack => LogWriter IO -> Eff EffectsIo () -> IO ()
+ Control.Eff.Concurrent.SingleThreaded: demonitor :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => MonitorReference -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: discriminateByAppName :: Text -> LogPredicate -> LogPredicate -> LogPredicate
+ Control.Eff.Concurrent.SingleThreaded: embedPdu :: EmbedProtocol protocol embeddedProtocol => Pdu embeddedProtocol r -> Pdu protocol r
+ Control.Eff.Concurrent.SingleThreaded: embeddedPdu :: EmbedProtocol protocol embeddedProtocol => Prism' (Pdu protocol result) (Pdu embeddedProtocol result)
+ Control.Eff.Concurrent.SingleThreaded: emergencySeverity :: Severity
+ Control.Eff.Concurrent.SingleThreaded: emptyObservers :: Observers o
+ Control.Eff.Concurrent.SingleThreaded: errorMessage :: HasCallStack => Text -> LogMessage
+ Control.Eff.Concurrent.SingleThreaded: errorMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
+ Control.Eff.Concurrent.SingleThreaded: errorSeverity :: Severity
+ Control.Eff.Concurrent.SingleThreaded: excludeLogMessages :: forall e a. Member Logs e => LogPredicate -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: executeAndResume :: forall q r v. (SetMember Process (Process q) r, HasCallStack) => Process q (ResumeProcess v) -> Eff r (Either (Interrupt 'Recoverable) v)
+ Control.Eff.Concurrent.SingleThreaded: executeAndResumeOrExit :: forall r q v. (SetMember Process (Process q) r, HasCallStack) => Process q (ResumeProcess v) -> Eff r v
+ Control.Eff.Concurrent.SingleThreaded: executeAndResumeOrThrow :: forall q r v. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => Process q (ResumeProcess v) -> Eff r v
+ Control.Eff.Concurrent.SingleThreaded: exitBecause :: forall r q a. (HasCallStack, SetMember Process (Process q) r) => Interrupt 'NoRecovery -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: exitNormally :: forall r q a. (HasCallStack, SetMember Process (Process q) r) => Eff r a
+ Control.Eff.Concurrent.SingleThreaded: exitOnInterrupt :: (HasCallStack, Member Interrupts r, SetMember Process (Process q) r) => Eff r a -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: exitWithError :: forall r q a. (HasCallStack, SetMember Process (Process q) r) => String -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: filterMessage :: Typeable a => (a -> Bool) -> MessageSelector a
+ Control.Eff.Concurrent.SingleThreaded: filteringLogWriter :: Monad e => LogPredicate -> LogWriter e -> LogWriter e
+ Control.Eff.Concurrent.SingleThreaded: flushMessages :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => Eff r [StrictDynamic]
+ Control.Eff.Concurrent.SingleThreaded: flushObservationQueue :: forall o r. (Member (ObservationQueueReader o) r, HasCallStack, MonadIO (Eff r), Typeable o, Member Logs r) => Eff r [o]
+ Control.Eff.Concurrent.SingleThreaded: foreverCheap :: Monad m => m a -> m ()
+ Control.Eff.Concurrent.SingleThreaded: forgetObserver :: (SetMember Process (Process q) r, HasCallStack, Member Interrupts r, Typeable o, NFData o, EmbedProtocol x (ObserverRegistry o), TangiblePdu x 'Asynchronous) => Observer o -> Endpoint x -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: fromEndpoint :: forall protocol_aRHw protocol_aRV2. Iso (Endpoint protocol_aRHw) (Endpoint protocol_aRV2) ProcessId ProcessId
+ Control.Eff.Concurrent.SingleThreaded: fromPdu :: EmbedProtocol protocol embeddedProtocol => Pdu protocol r -> Maybe (Pdu embeddedProtocol r)
+ Control.Eff.Concurrent.SingleThreaded: fromProcessId :: Iso' ProcessId Int
+ Control.Eff.Concurrent.SingleThreaded: fromSomeExitReason :: SomeExitReason -> Either (Interrupt 'NoRecovery) (Interrupt 'Recoverable)
+ Control.Eff.Concurrent.SingleThreaded: fromStrictDynamic :: Typeable a => StrictDynamic -> Maybe a
+ Control.Eff.Concurrent.SingleThreaded: ftpDaemon :: Facility
+ Control.Eff.Concurrent.SingleThreaded: getProcessState :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r (Maybe (ProcessTitle, ProcessDetails, ProcessState))
+ Control.Eff.Concurrent.SingleThreaded: handleInterrupts :: (HasCallStack, Member Interrupts r) => (Interrupt 'Recoverable -> Eff r a) -> Eff r a -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: handleLogWriterEffect :: HandleLogWriter writerEff e => writerEff () -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: handleObservations :: (HasCallStack, Typeable o, SetMember Process (Process q) r, NFData (Observer o)) => (o -> Eff r ()) -> Pdu (Observer o) 'Asynchronous -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: handleObserverRegistration :: forall o q r. (HasCallStack, Typeable o, SetMember Process (Process q) r, Member (ObserverState o) r, Member Logs r) => Pdu (ObserverRegistry o) 'Asynchronous -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: includeLogMessages :: forall e a. Member Logs e => LogPredicate -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: infoMessage :: HasCallStack => Text -> LogMessage
+ Control.Eff.Concurrent.SingleThreaded: infoMessageIO :: (HasCallStack, MonadIO m) => Text -> m LogMessage
+ Control.Eff.Concurrent.SingleThreaded: informationalSeverity :: Severity
+ Control.Eff.Concurrent.SingleThreaded: interceptLogMessages :: forall r b. Member Logs r => (LogMessage -> Eff r LogMessage) -> Eff r b -> Eff r b
+ Control.Eff.Concurrent.SingleThreaded: interrupt :: (HasCallStack, Member Interrupts r) => Interrupt 'Recoverable -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: interruptToExit :: Interrupt 'Recoverable -> Interrupt 'NoRecovery
+ Control.Eff.Concurrent.SingleThreaded: ioHandleLogWriter :: HasCallStack => Handle -> LogWriter IO
+ Control.Eff.Concurrent.SingleThreaded: isCrash :: Interrupt x -> Bool
+ Control.Eff.Concurrent.SingleThreaded: isProcessAlive :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r Bool
+ Control.Eff.Concurrent.SingleThreaded: isProcessDownInterrupt :: Maybe ProcessId -> Interrupt r -> Bool
+ Control.Eff.Concurrent.SingleThreaded: isRecoverable :: Interrupt x -> Bool
+ Control.Eff.Concurrent.SingleThreaded: kernelMessages :: Facility
+ Control.Eff.Concurrent.SingleThreaded: liftWriteLogMessage :: (HandleLogWriter writerEff e, SetMember LogWriterReader (LogWriterReader writerEff) e) => LogMessage -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: linePrinterSubsystem :: Facility
+ Control.Eff.Concurrent.SingleThreaded: linkProcess :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: lmAppName :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmFacility :: Functor f => (Facility -> f Facility) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmHostname :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmMessage :: Functor f => (Text -> f Text) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmMessageId :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmMessageStartsWith :: Text -> LogPredicate
+ Control.Eff.Concurrent.SingleThreaded: lmProcessId :: Functor f => (Maybe Text -> f (Maybe Text)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmSeverity :: Functor f => (Severity -> f Severity) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmSeverityIs :: Severity -> LogPredicate
+ Control.Eff.Concurrent.SingleThreaded: lmSeverityIsAtLeast :: Severity -> LogPredicate
+ Control.Eff.Concurrent.SingleThreaded: lmSrcLoc :: Functor f => (Maybe SrcLoc -> f (Maybe SrcLoc)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmStructuredData :: Functor f => ([StructuredDataElement] -> f [StructuredDataElement]) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmThreadId :: Functor f => (Maybe ThreadId -> f (Maybe ThreadId)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: lmTimestamp :: Functor f => (Maybe UTCTime -> f (Maybe UTCTime)) -> LogMessage -> f LogMessage
+ Control.Eff.Concurrent.SingleThreaded: local0 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: local1 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: local2 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: local3 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: local4 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: local5 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: local6 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: local7 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: localLogWriterReader :: forall h e a. SetMember LogWriterReader (LogWriterReader h) e => (LogWriter h -> LogWriter h) -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: logAlert :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logAlert' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logAlertFacility :: Facility
+ Control.Eff.Concurrent.SingleThreaded: logAuditFacility :: Facility
+ Control.Eff.Concurrent.SingleThreaded: logCritical :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logCritical' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logDebug :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logDebug' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logEmergency :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logEmergency' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logError :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logError' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logInfo :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logInfo' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logInterrupts :: forall r. (Member Logs r, HasCallStack, Member Interrupts r) => Eff r () -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: logMsg :: forall e. (HasCallStack, Member Logs e) => LogMessage -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logNotice :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logNotice' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logProcessExit :: forall e x. (Member Logs e, HasCallStack) => Interrupt x -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logWarning :: forall e. (HasCallStack, Member Logs e) => Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logWarning' :: forall e. (HasCallStack, Member Logs e) => String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logWithSeverity :: forall e. (HasCallStack, Member Logs e) => Severity -> Text -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: logWithSeverity' :: forall e. (HasCallStack, Member Logs e) => Severity -> String -> Eff e ()
+ Control.Eff.Concurrent.SingleThreaded: mailSystem :: Facility
+ Control.Eff.Concurrent.SingleThreaded: makeReference :: (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => Eff r Int
+ Control.Eff.Concurrent.SingleThreaded: manageObservers :: Eff (ObserverState o : r) a -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: mappingLogWriter :: (LogMessage -> LogMessage) -> LogWriter e -> LogWriter e
+ Control.Eff.Concurrent.SingleThreaded: mappingLogWriterM :: Monad e => (LogMessage -> e LogMessage) -> LogWriter e -> LogWriter e
+ Control.Eff.Concurrent.SingleThreaded: mergeEitherInterruptAndExitReason :: Either (Interrupt 'Recoverable) (Interrupt 'NoRecovery) -> Interrupt 'NoRecovery
+ Control.Eff.Concurrent.SingleThreaded: mkLogMessageTimeRenderer :: String -> LogMessageTimeRenderer
+ Control.Eff.Concurrent.SingleThreaded: mkLogWriterIO :: HasCallStack => (LogMessage -> IO ()) -> LogWriter IO
+ Control.Eff.Concurrent.SingleThreaded: modifyLogPredicate :: forall e b. (Member Logs e, HasCallStack) => (LogPredicate -> LogPredicate) -> Eff e b -> Eff e b
+ Control.Eff.Concurrent.SingleThreaded: modifyLogWriter :: forall h e a. LogsTo h e => (LogWriter h -> LogWriter h) -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: monitor :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r MonitorReference
+ Control.Eff.Concurrent.SingleThreaded: networkNewsSubsystem :: Facility
+ Control.Eff.Concurrent.SingleThreaded: newtype CaptureLogs a
+ Control.Eff.Concurrent.SingleThreaded: newtype Endpoint protocol
+ Control.Eff.Concurrent.SingleThreaded: newtype Facility
+ Control.Eff.Concurrent.SingleThreaded: newtype LogWriter writerM
+ Control.Eff.Concurrent.SingleThreaded: newtype ProcessId
+ Control.Eff.Concurrent.SingleThreaded: newtype PureLogWriter a
+ Control.Eff.Concurrent.SingleThreaded: newtype Serializer message
+ Control.Eff.Concurrent.SingleThreaded: noLogMessages :: LogPredicate
+ Control.Eff.Concurrent.SingleThreaded: noOpLogWriter :: Applicative m => LogWriter m
+ Control.Eff.Concurrent.SingleThreaded: noticeSeverity :: Severity
+ Control.Eff.Concurrent.SingleThreaded: ntpSubsystem :: Facility
+ Control.Eff.Concurrent.SingleThreaded: observed :: forall o r q. (SetMember Process (Process q) r, Member (ObserverState o) r, Member Interrupts r, TangibleObserver o) => o -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: prefixLogMessagesWith :: Text -> LogMessage -> LogMessage
+ Control.Eff.Concurrent.SingleThreaded: printLogMessage :: LogMessage -> IO ()
+ Control.Eff.Concurrent.SingleThreaded: provideInterrupts :: HasCallStack => Eff (Interrupts : r) a -> Eff r (Either (Interrupt 'Recoverable) a)
+ Control.Eff.Concurrent.SingleThreaded: provideInterruptsShutdown :: forall e a. Eff (Processes e) a -> Eff (SafeProcesses e) a
+ Control.Eff.Concurrent.SingleThreaded: proxyAsEndpoint :: proxy protocol -> ProcessId -> Endpoint protocol
+ Control.Eff.Concurrent.SingleThreaded: readObservationQueue :: forall o r. (Member (ObservationQueueReader o) r, HasCallStack, MonadIO (Eff r), Typeable o, Member Logs r) => Eff r o
+ Control.Eff.Concurrent.SingleThreaded: receiveAfter :: forall a r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r, Typeable a, NFData a, Show a) => Timeout -> Eff r (Maybe a)
+ Control.Eff.Concurrent.SingleThreaded: receiveAnyLoop :: forall r q endOfLoopResult. (SetMember Process (Process q) r, HasCallStack) => (Either (Interrupt 'Recoverable) StrictDynamic -> Eff r (Maybe endOfLoopResult)) -> Eff r endOfLoopResult
+ Control.Eff.Concurrent.SingleThreaded: receiveAnyMessage :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => Eff r StrictDynamic
+ Control.Eff.Concurrent.SingleThreaded: receiveLoop :: forall r q a endOfLoopResult. (SetMember Process (Process q) r, HasCallStack, NFData a, Typeable a) => (Either (Interrupt 'Recoverable) a -> Eff r (Maybe endOfLoopResult)) -> Eff r endOfLoopResult
+ Control.Eff.Concurrent.SingleThreaded: receiveMessage :: forall a r q. (HasCallStack, Typeable a, NFData a, Show a, SetMember Process (Process q) r, Member Interrupts r) => Eff r a
+ Control.Eff.Concurrent.SingleThreaded: receiveSelectedAfter :: forall a r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r, Show a) => MessageSelector a -> Timeout -> Eff r (Either TimerElapsed a)
+ Control.Eff.Concurrent.SingleThreaded: receiveSelectedLoop :: forall r q a endOfLoopResult. (SetMember Process (Process q) r, HasCallStack) => MessageSelector a -> (Either (Interrupt 'Recoverable) a -> Eff r (Maybe endOfLoopResult)) -> Eff r endOfLoopResult
+ Control.Eff.Concurrent.SingleThreaded: receiveSelectedMessage :: forall r q a. (HasCallStack, Show a, SetMember Process (Process q) r, Member Interrupts r) => MessageSelector a -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: receiveSelectedWithMonitorAfter :: forall a r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r, Show a) => ProcessId -> MessageSelector a -> Timeout -> Eff r (Either (Either ProcessDown TimerElapsed) a)
+ Control.Eff.Concurrent.SingleThreaded: receiveWithMonitor :: (HasCallStack, Member Interrupts r, SetMember Process (Process q) r, Member Interrupts r, Typeable a, Show a) => ProcessId -> MessageSelector a -> Eff r (Either ProcessDown a)
+ Control.Eff.Concurrent.SingleThreaded: registerObserver :: (SetMember Process (Process q) r, HasCallStack, Member Interrupts r, TangibleObserver o, EmbedProtocol x (ObserverRegistry o), TangiblePdu x 'Asynchronous) => Observer o -> Endpoint x -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: renderLogMessageBody :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderLogMessageBodyFixWidth :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderLogMessageBodyNoLocation :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderLogMessageConsoleLog :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderLogMessageSrcLoc :: LogMessageRenderer (Maybe Text)
+ Control.Eff.Concurrent.SingleThreaded: renderLogMessageSyslog :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderMaybeLogMessageLens :: Text -> Getter LogMessage (Maybe Text) -> LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderRFC3164 :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderRFC3164WithRFC5424Timestamps :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderRFC3164WithTimestamp :: LogMessageTimeRenderer -> LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderRFC5424 :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderRFC5424Header :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderRFC5424NoLocation :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: renderSyslogSeverityAndFacility :: LogMessageRenderer Text
+ Control.Eff.Concurrent.SingleThreaded: replicateCheapM_ :: Monad m => Int -> m a -> m ()
+ Control.Eff.Concurrent.SingleThreaded: respondToLogMessage :: forall r b. Member Logs r => (LogMessage -> Eff r ()) -> Eff r b -> Eff r b
+ Control.Eff.Concurrent.SingleThreaded: rfc3164Timestamp :: LogMessageTimeRenderer
+ Control.Eff.Concurrent.SingleThreaded: rfc5424NoZTimestamp :: LogMessageTimeRenderer
+ Control.Eff.Concurrent.SingleThreaded: rfc5424Timestamp :: LogMessageTimeRenderer
+ Control.Eff.Concurrent.SingleThreaded: runCaptureLogWriter :: Eff (CaptureLogWriter : e) a -> Eff e (a, [LogMessage])
+ Control.Eff.Concurrent.SingleThreaded: runEndpointReader :: HasCallStack => Endpoint o -> Eff (EndpointReader o : r) a -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: runLogWriterReader :: LogWriter h -> Eff (LogWriterReader h : e) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: runLogs :: forall h e b. LogsTo h (Logs : e) => LogPredicate -> Eff (Logs : e) b -> Eff e b
+ Control.Eff.Concurrent.SingleThreaded: schedule :: HasCallStack => LogWriter IO -> Eff Effects a -> IO (Either (Interrupt 'NoRecovery) a)
+ Control.Eff.Concurrent.SingleThreaded: sdElementId :: Functor f => (Text -> f Text) -> StructuredDataElement -> f StructuredDataElement
+ Control.Eff.Concurrent.SingleThreaded: sdElementParameters :: Functor f => ([SdParameter] -> f [SdParameter]) -> StructuredDataElement -> f StructuredDataElement
+ Control.Eff.Concurrent.SingleThreaded: securityAuthorizationMessages10 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: securityAuthorizationMessages4 :: Facility
+ Control.Eff.Concurrent.SingleThreaded: selectAnyMessage :: MessageSelector StrictDynamic
+ Control.Eff.Concurrent.SingleThreaded: selectDynamicMessage :: (StrictDynamic -> Maybe a) -> MessageSelector a
+ Control.Eff.Concurrent.SingleThreaded: selectMessage :: Typeable t => MessageSelector t
+ Control.Eff.Concurrent.SingleThreaded: selectMessageWith :: Typeable a => (a -> Maybe b) -> MessageSelector b
+ Control.Eff.Concurrent.SingleThreaded: selectProcessDown :: MonitorReference -> MessageSelector ProcessDown
+ Control.Eff.Concurrent.SingleThreaded: selectTimerElapsed :: TimerReference -> MessageSelector TimerElapsed
+ Control.Eff.Concurrent.SingleThreaded: self :: (HasCallStack, SetMember Process (Process q) r) => Eff r ProcessId
+ Control.Eff.Concurrent.SingleThreaded: sendAfter :: forall r q message. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r, Typeable message, NFData message) => ProcessId -> Timeout -> (TimerReference -> message) -> Eff r TimerReference
+ Control.Eff.Concurrent.SingleThreaded: sendAnyMessage :: forall r q. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => ProcessId -> StrictDynamic -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: sendInterrupt :: forall r q. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => ProcessId -> Interrupt 'Recoverable -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: sendMessage :: forall r q o. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r, Typeable o, NFData o) => ProcessId -> o -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: sendShutdown :: forall r q. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => ProcessId -> Interrupt 'NoRecovery -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: setCallStack :: CallStack -> LogMessage -> LogMessage
+ Control.Eff.Concurrent.SingleThreaded: setLogMessageHostname :: LogMessage -> IO LogMessage
+ Control.Eff.Concurrent.SingleThreaded: setLogMessageThreadId :: LogMessage -> IO LogMessage
+ Control.Eff.Concurrent.SingleThreaded: setLogMessageTimestamp :: LogMessage -> IO LogMessage
+ Control.Eff.Concurrent.SingleThreaded: setLogPredicate :: forall r b. (Member Logs r, HasCallStack) => LogPredicate -> Eff r b -> Eff r b
+ Control.Eff.Concurrent.SingleThreaded: setLogWriter :: forall h e a. LogsTo h e => LogWriter h -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: spawn :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.SingleThreaded: spawnLink :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.SingleThreaded: spawnLinkObservationQueueWriter :: forall o q h. (TangibleObserver o, TangiblePdu (Observer o) 'Asynchronous, Member Logs q, Lifted IO q, LogsTo h (Processes q), HasCallStack) => ObservationQueue o -> Eff (Processes q) (Observer o)
+ Control.Eff.Concurrent.SingleThreaded: spawnRaw :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (SafeProcesses q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.SingleThreaded: spawnRaw_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (SafeProcesses q) () -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: spawn_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: startTimer :: forall r q. (Lifted IO q, HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => Timeout -> Eff r TimerReference
+ Control.Eff.Concurrent.SingleThreaded: stdoutLogWriter :: LogMessageRenderer Text -> LogWriter IO
+ Control.Eff.Concurrent.SingleThreaded: suppressTimestamp :: LogMessageTimeRenderer
+ Control.Eff.Concurrent.SingleThreaded: systemDaemons :: Facility
+ Control.Eff.Concurrent.SingleThreaded: toCrashReason :: Interrupt x -> Maybe Text
+ Control.Eff.Concurrent.SingleThreaded: toExitRecovery :: Interrupt r -> ExitRecovery
+ Control.Eff.Concurrent.SingleThreaded: toExitSeverity :: Interrupt e -> ExitSeverity
+ Control.Eff.Concurrent.SingleThreaded: toLogMessage :: ToLogMessage a => a -> LogMessage
+ Control.Eff.Concurrent.SingleThreaded: toObserver :: TangibleObserver o => Endpoint (Observer o) -> Observer o
+ Control.Eff.Concurrent.SingleThreaded: toObserverFor :: (TangibleObserver o, Typeable a, TangiblePdu a 'Asynchronous) => (o -> Pdu a 'Asynchronous) -> Endpoint a -> Observer o
+ Control.Eff.Concurrent.SingleThreaded: toStrictDynamic :: (Typeable a, NFData a) => a -> StrictDynamic
+ Control.Eff.Concurrent.SingleThreaded: tryReadObservationQueue :: forall o r. (Member (ObservationQueueReader o) r, HasCallStack, MonadIO (Eff r), Typeable o, Member Logs r) => Eff r (Maybe o)
+ Control.Eff.Concurrent.SingleThreaded: tryUninterrupted :: (HasCallStack, Member Interrupts r) => Eff r a -> Eff r (Either (Interrupt 'Recoverable) a)
+ Control.Eff.Concurrent.SingleThreaded: type BaseEffects = BaseEffectsIo
+ Control.Eff.Concurrent.SingleThreaded: type CaptureLogWriter = Writer LogMessage
+ Control.Eff.Concurrent.SingleThreaded: type Effects = EffectsIo
+ Control.Eff.Concurrent.SingleThreaded: type EndpointReader o = Reader (Endpoint o)
+ Control.Eff.Concurrent.SingleThreaded: type HasBaseEffects e = HasBaseEffectsIo e
+ Control.Eff.Concurrent.SingleThreaded: type Interrupts = Exc (Interrupt 'Recoverable)
+ Control.Eff.Concurrent.SingleThreaded: type LogIo e = (LogsTo IO e, Lifted IO e)
+ Control.Eff.Concurrent.SingleThreaded: type LogMessageRenderer a = LogMessage -> a
+ Control.Eff.Concurrent.SingleThreaded: type LogPredicate = LogMessage -> Bool
+ Control.Eff.Concurrent.SingleThreaded: type LoggingAndIo = '[Logs, LogWriterReader IO, Lift IO]
+ Control.Eff.Concurrent.SingleThreaded: type LogsTo h e = (Member Logs e, HandleLogWriter h e, SetMember LogWriterReader (LogWriterReader h) e)
+ Control.Eff.Concurrent.SingleThreaded: type ObservationQueueReader a = Reader (ObservationQueue a)
+ Control.Eff.Concurrent.SingleThreaded: type ObserverState o = State (Observers o)
+ Control.Eff.Concurrent.SingleThreaded: type Processes e = Interrupts : SafeProcesses e
+ Control.Eff.Concurrent.SingleThreaded: type RecoverableInterrupt = Interrupt 'Recoverable
+ Control.Eff.Concurrent.SingleThreaded: type SafeEffects = SafeEffectsIo
+ Control.Eff.Concurrent.SingleThreaded: type SafeProcesses r = Process r : r
+ Control.Eff.Concurrent.SingleThreaded: type ServesProtocol o r q = (Typeable o, SetMember Process (Process q) r, Member (EndpointReader o) r)
+ Control.Eff.Concurrent.SingleThreaded: type Tangible i = (NFData i, Typeable i, Show i)
+ Control.Eff.Concurrent.SingleThreaded: type TangiblePdu p r = (Typeable p, Typeable r, Tangible (Pdu p r))
+ Control.Eff.Concurrent.SingleThreaded: type family ProtocolReply (s :: Synchronicity)
+ Control.Eff.Concurrent.SingleThreaded: unlinkProcess :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: unwrapStrictDynamic :: StrictDynamic -> Dynamic
+ Control.Eff.Concurrent.SingleThreaded: updateProcessDetails :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessDetails -> Eff r ()
+ Control.Eff.Concurrent.SingleThreaded: userLevelMessages :: Facility
+ Control.Eff.Concurrent.SingleThreaded: uucpSubsystem :: Facility
+ Control.Eff.Concurrent.SingleThreaded: warningSeverity :: Severity
+ Control.Eff.Concurrent.SingleThreaded: withAsyncLogWriter :: (LogsTo IO e, Lifted IO e, MonadBaseControl IO (Eff e), Integral len) => len -> Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withAsyncLogging :: (Lifted IO e, MonadBaseControl IO (Eff e), Integral len) => LogWriter IO -> len -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withConsoleLogWriter :: (LogsTo IO e, Lifted IO e) => Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withConsoleLogging :: Lifted IO e => Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withFileLogWriter :: (Lifted IO e, LogsTo IO e, MonadBaseControl IO (Eff e)) => FilePath -> Eff e b -> Eff e b
+ Control.Eff.Concurrent.SingleThreaded: withFileLogging :: (Lifted IO e, MonadBaseControl IO (Eff e)) => FilePath -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withIoLogging :: SetMember Lift (Lift IO) e => LogWriter IO -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withLogging :: forall h e a. (Applicative h, LogsTo h (Logs : (LogWriterReader h : e))) => LogWriter h -> Eff (Logs : (LogWriterReader h : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withMonitor :: (HasCallStack, Member Interrupts r, SetMember Process (Process q) r, Member Interrupts r) => ProcessId -> (MonitorReference -> Eff r a) -> Eff r a
+ Control.Eff.Concurrent.SingleThreaded: withObservationQueue :: forall o b e len. (HasCallStack, Typeable o, Show o, Member Logs e, Lifted IO e, Integral len, Member Interrupts e) => len -> Eff (ObservationQueueReader o : e) b -> Eff e b
+ Control.Eff.Concurrent.SingleThreaded: withSomeLogging :: forall h e a. (Applicative h, LogsTo h (Logs : (LogWriterReader h : e))) => Eff (Logs : (LogWriterReader h : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withTraceLogWriter :: forall h e a. (Monad h, LogsTo h e) => Eff e a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withTraceLogging :: Lifted IO e => Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withUDPLogWriter :: (Lifted IO e, LogsTo IO e, MonadBaseControl IO (Eff e), HasCallStack) => (LogMessage -> Text) -> String -> String -> Eff e b -> Eff e b
+ Control.Eff.Concurrent.SingleThreaded: withUDPLogging :: (HasCallStack, MonadBaseControl IO (Eff e), Lifted IO e) => (LogMessage -> Text) -> String -> String -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: withUnixSocketLogWriter :: (Lifted IO e, LogsTo IO e, MonadBaseControl IO (Eff e), HasCallStack) => LogMessageRenderer Text -> FilePath -> Eff e b -> Eff e b
+ Control.Eff.Concurrent.SingleThreaded: withUnixSocketLogging :: (HasCallStack, MonadBaseControl IO (Eff e), Lifted IO e) => LogMessageRenderer Text -> FilePath -> Text -> Facility -> LogPredicate -> Eff (Logs : (LogWriterReader IO : e)) a -> Eff e a
+ Control.Eff.Concurrent.SingleThreaded: yieldProcess :: forall r q. (SetMember Process (Process q) r, HasCallStack, Member Interrupts r) => Eff r ()
- Control.Eff.Concurrent: defaultMain :: HasCallStack => Eff InterruptableProcEff () -> IO ()
+ Control.Eff.Concurrent: defaultMain :: HasCallStack => Eff Effects () -> IO ()
- Control.Eff.Concurrent: defaultMainWithLogWriter :: HasCallStack => LogWriter IO -> Eff InterruptableProcEff () -> IO ()
+ Control.Eff.Concurrent: defaultMainWithLogWriter :: HasCallStack => LogWriter IO -> Eff Effects () -> IO ()
- Control.Eff.Concurrent: fromEndpoint :: forall protocol_aRHy protocol_aRV4. Iso (Endpoint protocol_aRHy) (Endpoint protocol_aRV4) ProcessId ProcessId
+ Control.Eff.Concurrent: fromEndpoint :: forall protocol_aRHw protocol_aRV2. Iso (Endpoint protocol_aRHw) (Endpoint protocol_aRV2) ProcessId ProcessId
- Control.Eff.Concurrent: provideInterruptsShutdown :: forall e a. Eff (InterruptableProcess e) a -> Eff (ConsProcess e) a
+ Control.Eff.Concurrent: provideInterruptsShutdown :: forall e a. Eff (Processes e) a -> Eff (SafeProcesses e) a
- Control.Eff.Concurrent: schedule :: HasCallStack => Eff InterruptableProcEff () -> Eff LoggingAndIo ()
+ Control.Eff.Concurrent: schedule :: HasCallStack => Eff Effects () -> Eff LoggingAndIo ()
- Control.Eff.Concurrent: spawn :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (InterruptableProcess q) () -> Eff r ProcessId
+ Control.Eff.Concurrent: spawn :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ProcessId
- Control.Eff.Concurrent: spawnLink :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (InterruptableProcess q) () -> Eff r ProcessId
+ Control.Eff.Concurrent: spawnLink :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ProcessId
- Control.Eff.Concurrent: spawnLinkObservationQueueWriter :: forall o q h. (TangibleObserver o, TangiblePdu (Observer o) 'Asynchronous, Member Logs q, Lifted IO q, LogsTo h (InterruptableProcess q), HasCallStack) => ObservationQueue o -> Eff (InterruptableProcess q) (Observer o)
+ Control.Eff.Concurrent: spawnLinkObservationQueueWriter :: forall o q h. (TangibleObserver o, TangiblePdu (Observer o) 'Asynchronous, Member Logs q, Lifted IO q, LogsTo h (Processes q), HasCallStack) => ObservationQueue o -> Eff (Processes q) (Observer o)
- Control.Eff.Concurrent: spawnRaw :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (ConsProcess q) () -> Eff r ProcessId
+ Control.Eff.Concurrent: spawnRaw :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (SafeProcesses q) () -> Eff r ProcessId
- Control.Eff.Concurrent: spawnRaw_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (ConsProcess q) () -> Eff r ()
+ Control.Eff.Concurrent: spawnRaw_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (SafeProcesses q) () -> Eff r ()
- Control.Eff.Concurrent: spawn_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (InterruptableProcess q) () -> Eff r ()
+ Control.Eff.Concurrent: spawn_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ()
- Control.Eff.Concurrent.Process: provideInterruptsShutdown :: forall e a. Eff (InterruptableProcess e) a -> Eff (ConsProcess e) a
+ Control.Eff.Concurrent.Process: provideInterruptsShutdown :: forall e a. Eff (Processes e) a -> Eff (SafeProcesses e) a
- Control.Eff.Concurrent.Process: spawn :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (InterruptableProcess q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.Process: spawn :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ProcessId
- Control.Eff.Concurrent.Process: spawnLink :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (InterruptableProcess q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.Process: spawnLink :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ProcessId
- Control.Eff.Concurrent.Process: spawnRaw :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (ConsProcess q) () -> Eff r ProcessId
+ Control.Eff.Concurrent.Process: spawnRaw :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (SafeProcesses q) () -> Eff r ProcessId
- Control.Eff.Concurrent.Process: spawnRaw_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (ConsProcess q) () -> Eff r ()
+ Control.Eff.Concurrent.Process: spawnRaw_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (SafeProcesses q) () -> Eff r ()
- Control.Eff.Concurrent.Process: spawn_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (InterruptableProcess q) () -> Eff r ()
+ Control.Eff.Concurrent.Process: spawn_ :: forall r q. (HasCallStack, SetMember Process (Process q) r, Member Interrupts r) => ProcessTitle -> Eff (Processes q) () -> Eff r ()
- Control.Eff.Concurrent.Process.ForkIOScheduler: defaultMain :: HasCallStack => Eff InterruptableProcEff () -> IO ()
+ Control.Eff.Concurrent.Process.ForkIOScheduler: defaultMain :: HasCallStack => Eff Effects () -> IO ()
- Control.Eff.Concurrent.Process.ForkIOScheduler: defaultMainWithLogWriter :: HasCallStack => LogWriter IO -> Eff InterruptableProcEff () -> IO ()
+ Control.Eff.Concurrent.Process.ForkIOScheduler: defaultMainWithLogWriter :: HasCallStack => LogWriter IO -> Eff Effects () -> IO ()
- Control.Eff.Concurrent.Process.ForkIOScheduler: schedule :: HasCallStack => Eff InterruptableProcEff () -> Eff LoggingAndIo ()
+ Control.Eff.Concurrent.Process.ForkIOScheduler: schedule :: HasCallStack => Eff Effects () -> Eff LoggingAndIo ()
- Control.Eff.Concurrent.Process.Interactive: forkInteractiveScheduler :: forall r. SetMember Lift (Lift IO) r => (Eff (InterruptableProcess r) () -> IO ()) -> IO (SchedulerSession r)
+ Control.Eff.Concurrent.Process.Interactive: forkInteractiveScheduler :: forall r. SetMember Lift (Lift IO) r => (Eff (Processes r) () -> IO ()) -> IO (SchedulerSession r)
- Control.Eff.Concurrent.Process.Interactive: submit :: forall r a. SetMember Lift (Lift IO) r => SchedulerSession r -> Eff (InterruptableProcess r) a -> IO a
+ Control.Eff.Concurrent.Process.Interactive: submit :: forall r a. SetMember Lift (Lift IO) r => SchedulerSession r -> Eff (Processes r) a -> IO a
- Control.Eff.Concurrent.Process.SingleThreadedScheduler: scheduleIO :: MonadIO m => (forall b. Eff r b -> Eff '[Lift m] b) -> Eff (InterruptableProcess r) a -> m (Either (Interrupt 'NoRecovery) a)
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: scheduleIO :: MonadIO m => (forall b. Eff r b -> Eff '[Lift m] b) -> Eff (Processes r) a -> m (Either (Interrupt 'NoRecovery) a)
- Control.Eff.Concurrent.Process.SingleThreadedScheduler: scheduleIOWithLogging :: HasCallStack => LogWriter IO -> Eff (InterruptableProcess LoggingAndIo) a -> IO (Either (Interrupt 'NoRecovery) a)
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: scheduleIOWithLogging :: HasCallStack => LogWriter IO -> Eff EffectsIo a -> IO (Either (Interrupt 'NoRecovery) a)
- Control.Eff.Concurrent.Process.SingleThreadedScheduler: scheduleM :: forall m r a. Monad m => (forall b. Eff r b -> m b) -> m () -> Eff (InterruptableProcess r) a -> m (Either (Interrupt 'NoRecovery) a)
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: scheduleM :: forall m r a. Monad m => (forall b. Eff r b -> m b) -> m () -> Eff (Processes r) a -> m (Either (Interrupt 'NoRecovery) a)
- Control.Eff.Concurrent.Process.SingleThreadedScheduler: scheduleMonadIOEff :: MonadIO (Eff r) => Eff (InterruptableProcess r) a -> Eff r (Either (Interrupt 'NoRecovery) a)
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: scheduleMonadIOEff :: MonadIO (Eff r) => Eff (Processes r) a -> Eff r (Either (Interrupt 'NoRecovery) a)
- Control.Eff.Concurrent.Process.SingleThreadedScheduler: schedulePure :: Eff (InterruptableProcess '[Logs, LogWriterReader PureLogWriter]) a -> Either (Interrupt 'NoRecovery) a
+ Control.Eff.Concurrent.Process.SingleThreadedScheduler: schedulePure :: Eff (Processes '[Logs, LogWriterReader PureLogWriter]) a -> Either (Interrupt 'NoRecovery) a
- Control.Eff.Concurrent.Protocol: fromEndpoint :: forall protocol_aRHy protocol_aRV4. Iso (Endpoint protocol_aRHy) (Endpoint protocol_aRV4) ProcessId ProcessId
+ Control.Eff.Concurrent.Protocol: fromEndpoint :: forall protocol_aRHw protocol_aRV2. Iso (Endpoint protocol_aRHw) (Endpoint protocol_aRV2) ProcessId ProcessId
- Control.Eff.Concurrent.Protocol.EffectfulServer: genServer :: forall tag eLoop e. (HasCallStack, TangibleGenServer tag eLoop e, Server (GenServer tag eLoop e) (InterruptableProcess e)) => (forall x. GenServerId tag -> Eff eLoop x -> Eff (InterruptableProcess e) x) -> (GenServerId tag -> Event tag -> Eff eLoop ()) -> GenServerId tag -> Init (GenServer tag eLoop e) (InterruptableProcess e)
+ Control.Eff.Concurrent.Protocol.EffectfulServer: genServer :: forall tag eLoop e. (HasCallStack, TangibleGenServer tag eLoop e, Server (GenServer tag eLoop e) (Processes e)) => (forall x. GenServerId tag -> Eff eLoop x -> Eff (Processes e) x) -> (GenServerId tag -> Event tag -> Eff eLoop ()) -> GenServerId tag -> Init (GenServer tag eLoop e) (Processes e)
- Control.Eff.Concurrent.Protocol.EffectfulServer: onEvent :: (Server a e, Show (Init a e), Member Logs (Effects a e)) => Init a e -> Event (ServerPdu a) -> Eff (Effects a e) ()
+ Control.Eff.Concurrent.Protocol.EffectfulServer: onEvent :: (Server a e, Show (Init a e), Member Logs (ServerEffects a e)) => Init a e -> Event (ServerPdu a) -> Eff (ServerEffects a e) ()
- Control.Eff.Concurrent.Protocol.EffectfulServer: protocolServerLoop :: forall q h a. (Server a (InterruptableProcess q), LogsTo h (InterruptableProcess q), SetMember Process (Process q) (Effects a (InterruptableProcess q)), Member Interrupts (Effects a (InterruptableProcess q)), Typeable a, Typeable (ServerPdu a)) => Init a (InterruptableProcess q) -> Eff (InterruptableProcess q) ()
+ Control.Eff.Concurrent.Protocol.EffectfulServer: protocolServerLoop :: forall q h a. (Server a (Processes q), LogsTo h (Processes q), SetMember Process (Process q) (ServerEffects a (Processes q)), Member Interrupts (ServerEffects a (Processes q)), Typeable a, Typeable (ServerPdu a)) => Init a (Processes q) -> Eff (Processes q) ()
- Control.Eff.Concurrent.Protocol.EffectfulServer: runEffects :: (Server a e, Effects a e ~ e) => Init a e -> Eff (Effects a e) x -> Eff e x
+ Control.Eff.Concurrent.Protocol.EffectfulServer: runEffects :: (Server a e, ServerEffects a e ~ e) => Init a e -> Eff (ServerEffects a e) x -> Eff e x
- Control.Eff.Concurrent.Protocol.EffectfulServer: start :: forall a q h. (Server a (InterruptableProcess q), Typeable a, Typeable (ServerPdu a), LogsTo h (InterruptableProcess q), SetMember Process (Process q) (Effects a (InterruptableProcess q)), Member Interrupts (Effects a (InterruptableProcess q)), HasCallStack) => Init a (InterruptableProcess q) -> Eff (InterruptableProcess q) (Endpoint (ServerPdu a))
+ Control.Eff.Concurrent.Protocol.EffectfulServer: start :: forall a q h. (Server a (Processes q), Typeable a, Typeable (ServerPdu a), LogsTo h (Processes q), SetMember Process (Process q) (ServerEffects a (Processes q)), Member Interrupts (ServerEffects a (Processes q)), HasCallStack) => Init a (Processes q) -> Eff (Processes q) (Endpoint (ServerPdu a))
- Control.Eff.Concurrent.Protocol.EffectfulServer: startLink :: forall a q h. (Typeable a, Typeable (ServerPdu a), Server a (InterruptableProcess q), LogsTo h (InterruptableProcess q), SetMember Process (Process q) (Effects a (InterruptableProcess q)), Member Interrupts (Effects a (InterruptableProcess q)), HasCallStack) => Init a (InterruptableProcess q) -> Eff (InterruptableProcess q) (Endpoint (ServerPdu a))
+ Control.Eff.Concurrent.Protocol.EffectfulServer: startLink :: forall a q h. (Typeable a, Typeable (ServerPdu a), Server a (Processes q), LogsTo h (Processes q), SetMember Process (Process q) (ServerEffects a (Processes q)), Member Interrupts (ServerEffects a (Processes q)), HasCallStack) => Init a (Processes q) -> Eff (Processes q) (Endpoint (ServerPdu a))
- Control.Eff.Concurrent.Protocol.EffectfulServer: type family Effects a e :: [Type -> Type];
+ Control.Eff.Concurrent.Protocol.EffectfulServer: type family ServerEffects a e :: [Type -> Type];
- Control.Eff.Concurrent.Protocol.Observer.Queue: spawnLinkObservationQueueWriter :: forall o q h. (TangibleObserver o, TangiblePdu (Observer o) 'Asynchronous, Member Logs q, Lifted IO q, LogsTo h (InterruptableProcess q), HasCallStack) => ObservationQueue o -> Eff (InterruptableProcess q) (Observer o)
+ Control.Eff.Concurrent.Protocol.Observer.Queue: spawnLinkObservationQueueWriter :: forall o q h. (TangibleObserver o, TangiblePdu (Observer o) 'Asynchronous, Member Logs q, Lifted IO q, LogsTo h (Processes q), HasCallStack) => ObservationQueue o -> Eff (Processes q) (Observer o)
- Control.Eff.Concurrent.Protocol.StatefulServer: setup :: (Server a q, Default (Model a), Default (Settings a)) => StartArgument a q -> Eff (InterruptableProcess q) (Model a, Settings a)
+ Control.Eff.Concurrent.Protocol.StatefulServer: setup :: (Server a q, Default (Model a), Default (Settings a)) => StartArgument a q -> Eff (Processes q) (Model a, Settings a)
- Control.Eff.Concurrent.Protocol.StatefulServer: start :: forall a q h. (HasCallStack, Typeable a, LogsTo h (InterruptableProcess q), Server (Stateful a) (InterruptableProcess q), Server a q) => StartArgument a q -> Eff (InterruptableProcess q) (Endpoint (Protocol a))
+ Control.Eff.Concurrent.Protocol.StatefulServer: start :: forall a q h. (HasCallStack, Typeable a, LogsTo h (Processes q), Server (Stateful a) (Processes q), Server a q) => StartArgument a q -> Eff (Processes q) (Endpoint (Protocol a))
- Control.Eff.Concurrent.Protocol.StatefulServer: startLink :: forall a q h. (HasCallStack, Typeable a, LogsTo h (InterruptableProcess q), Server (Stateful a) (InterruptableProcess q), Server a q) => StartArgument a q -> Eff (InterruptableProcess q) (Endpoint (Protocol a))
+ Control.Eff.Concurrent.Protocol.StatefulServer: startLink :: forall a q h. (HasCallStack, Typeable a, LogsTo h (Processes q), Server (Stateful a) (Processes q), Server a q) => StartArgument a q -> Eff (Processes q) (Endpoint (Protocol a))
- Control.Eff.Concurrent.Protocol.StatefulServer: update :: Server a q => StartArgument a q -> Event (Protocol a) -> Eff (ModelState a : (SettingsReader a : InterruptableProcess q)) ()
+ Control.Eff.Concurrent.Protocol.StatefulServer: update :: Server a q => StartArgument a q -> Event (Protocol a) -> Eff (ModelState a : (SettingsReader a : Processes q)) ()
- Control.Eff.Concurrent.Protocol.Supervisor: startSupervisor :: forall p e. (HasCallStack, LogsTo IO (InterruptableProcess e), Lifted IO e, TangibleSup p, Server (Sup p) e) => StartArgument (Sup p) e -> Eff (InterruptableProcess e) (Endpoint (Sup p))
+ Control.Eff.Concurrent.Protocol.Supervisor: startSupervisor :: forall p e. (HasCallStack, LogsTo IO (Processes e), Lifted IO e, TangibleSup p, Server (Sup p) e) => StartArgument (Sup p) e -> Eff (Processes e) (Endpoint (Sup p))

Files

ChangeLog.md view
@@ -1,5 +1,8 @@ # Changelog for extensible-effects-concurrent +## 0.25.0 +- Improve effect type aliases and module structure, [read the details here](./ChangeLog-Details-0.25.0.md).+         ## 0.24.3 - Add `EmbedProtocol` related function `toEmbeddedOrigin`     
README.md view
@@ -37,6 +37,12 @@ - A *multi-threaded* scheduler, based on the `async` - A *pure* single-threaded scheduler, based on coroutines +For convenience, it is enough to import one of three modules:++- `Control.Eff.Concurrent` for a multi threaded scheduler and `LoggingAndIo`+- `Control.Eff.Concurrent.Pure`, for a single threaded scheduler and pure log capturing and otherwise no IO+- `Control.Eff.Concurrent.SingleThreaded`, for a single threaded scheduler and totally impure logging via IO+ ### Process Life-Cycles and Interprocess Links  All processes except the first process are **`spawned`** by existing 
examples/example-1/Main.hs view
@@ -6,7 +6,7 @@ import           Control.Monad import           Data.Dynamic import           Control.Eff.Concurrent-import           Control.Eff.Concurrent.Protocol.EffectfulServer+import           Control.Eff.Concurrent.Protocol.EffectfulServer as Server import qualified Control.Exception             as Exc import qualified Data.Text as T import           Control.DeepSeq@@ -41,10 +41,10 @@ main :: IO () main = defaultMain example -mainProcessSpawnsAChildAndReturns :: HasCallStack => Eff InterruptableProcEff ()+mainProcessSpawnsAChildAndReturns :: HasCallStack => Eff Effects () mainProcessSpawnsAChildAndReturns = void (spawn "some child" (void receiveAnyMessage)) -example:: HasCallStack => Eff InterruptableProcEff ()+example:: HasCallStack => Eff Effects () example = do   me <- self   logInfo (T.pack ("I am " ++ show me))@@ -73,10 +73,10 @@             go   go -testServerLoop :: Eff InterruptableProcEff (Endpoint TestProtocol)+testServerLoop :: Eff Effects (Endpoint TestProtocol) testServerLoop = start (genServer (const id) handleReq "test-server-1")  where-  handleReq :: GenServerId TestProtocol -> Event TestProtocol -> Eff InterruptableProcEff ()+  handleReq :: GenServerId TestProtocol -> Event TestProtocol -> Eff Effects ()   handleReq _myId (OnCall ser orig cm) =     case cm of       Terminate -> do
examples/example-2/Main.hs view
@@ -4,7 +4,7 @@  import           Data.Dynamic import           Control.Eff-import           Control.Eff.Concurrent+import           Control.Eff.Concurrent.SingleThreaded import           Control.Eff.Concurrent.Protocol.StatefulServer import           Control.Monad import           Data.Foldable@@ -33,8 +33,7 @@   rnf Cnt = ()  counterExample-  :: (Typeable q, LogsTo IO q, Lifted IO q)-  => Eff (InterruptableProcess q) ()+  :: Eff Effects () counterExample = do   c <- spawnCounter   let cp = _fromEndpoint c@@ -124,15 +123,15 @@      other -> logWarning (T.pack (show other)) -spawnCounter :: (LogsTo IO q, Lifted IO q) => Eff (InterruptableProcess q) ( Endpoint SupiCounter )+spawnCounter :: (LogIo q) => Eff (Processes q) ( Endpoint SupiCounter ) spawnCounter = start MkEmptySupiCounter   deriving instance Show (Pdu Counter x)  logCounterObservations-  :: (LogsTo IO q, Lifted IO q, Typeable q)-  => Eff (InterruptableProcess q) (Observer CounterChanged)+  :: (LogIo q, Typeable q)+  => Eff (Processes q) (Observer CounterChanged) logCounterObservations = do   svr <- start OCCStart   pure (toObserver svr)
examples/example-4/Main.hs view
@@ -14,7 +14,7 @@  newtype WhoAreYou = WhoAreYou ProcessId deriving (Typeable, NFData, Show) -firstExample :: (HasCallStack, Member Logs q) => Eff (InterruptableProcess q) ()+firstExample :: (HasCallStack, Member Logs q) => Eff (Processes q) () firstExample = do   person <- spawn "first-example"     (do
extensible-effects-concurrent.cabal view
@@ -1,6 +1,6 @@ cabal-version:  2.0 name:           extensible-effects-concurrent-version:        0.24.3+version:        0.25.0 description:    Please see the README on GitHub at <https://github.com/sheyll/extensible-effects-concurrent#readme> synopsis:       Message passing concurrency as extensible-effect homepage:       https://github.com/sheyll/extensible-effects-concurrent#readme@@ -81,6 +81,8 @@                   Control.Eff.LogWriter.UDP,                   Control.Eff.LogWriter.UnixSocket,                   Control.Eff.Concurrent,+                  Control.Eff.Concurrent.Pure,+                  Control.Eff.Concurrent.SingleThreaded,                   Control.Eff.Concurrent.Protocol,                   Control.Eff.Concurrent.Protocol.Client,                   Control.Eff.Concurrent.Protocol.EffectfulServer,
src/Control/Eff/Concurrent.hs view
@@ -1,5 +1,18 @@ -- | Erlang style processes with message passing concurrency based on -- (more) @extensible-effects@.+--+-- This module re-exports most of the library.+--+-- There are several /scheduler/ implementations to choose from.+--+-- This module re-exports "Control.Eff.Concurrent.Process.ForkIOScheduler".+--+-- To use another scheduler implementation, don't import this module, but instead+-- import one of:+--+-- * "Control.Eff.Concurrent.Pure"+-- * "Control.Eff.Concurrent.SingleThreaded"+-- module Control.Eff.Concurrent   (     -- * Concurrent Processes with Message Passing Concurrency@@ -9,9 +22,6 @@     -- ** Concurrent Scheduler     module Control.Eff.Concurrent.Process.ForkIOScheduler   ,-    -- ** Single Threaded Scheduler-    module Control.Eff.Concurrent.Process.SingleThreadedScheduler-  ,     -- * Timers and Timeouts     module Control.Eff.Concurrent.Process.Timer   ,@@ -69,7 +79,7 @@                                                 , Serializer(..)                                                 , ProcessId(..)                                                 , fromProcessId-                                                , ConsProcess+                                                , SafeProcesses                                                 , ResumeProcess(..)                                                 , ProcessState(..)                                                 , yieldProcess@@ -135,7 +145,7 @@                                                 , ExitRecovery(..)                                                 , RecoverableInterrupt                                                 , Interrupts-                                                , InterruptableProcess+                                                , Processes                                                 , ExitSeverity(..)                                                 , SomeExitReason(SomeExitReason)                                                 , toExitRecovery@@ -216,15 +226,10 @@                                                 ( schedule                                                 , defaultMain                                                 , defaultMainWithLogWriter-                                                , ProcEff-                                                , InterruptableProcEff-                                                , SchedulerIO-                                                , HasSchedulerIO-                                                )--import           Control.Eff.Concurrent.Process.SingleThreadedScheduler-                                                ( schedulePure-                                                , defaultMainSingleThreaded+                                                , SafeEffects+                                                , Effects+                                                , BaseEffects+                                                , HasBaseEffects                                                 ) import           Control.Eff.Log import           Control.Eff.LogWriter.Async
src/Control/Eff/Concurrent/Process.hs view
@@ -31,7 +31,7 @@     -- ** ProcessId Type   , ProcessId(..)   , fromProcessId-  , ConsProcess+  , SafeProcesses   , ResumeProcess(..)   -- ** Process State   , ProcessState(..)@@ -105,7 +105,7 @@   , ExitRecovery(..)   , RecoverableInterrupt   , Interrupts-  , InterruptableProcess+  , Processes   , ExitSeverity(..)   , SomeExitReason(SomeExitReason)   , toExitRecovery@@ -643,20 +643,21 @@ -- | 'Interrupt's which are 'Recoverable'. type RecoverableInterrupt = Interrupt 'Recoverable --- | /Cons/ 'Process' onto a list of effects.-type ConsProcess r = Process r ': r+-- | This adds a layer of the 'Interrupts' effect on top of 'Processes'+type Processes e = Interrupts ': SafeProcesses e +-- | /Cons/ 'Process' onto a list of effects. This is called @SafeProcesses@ because+-- the the actions cannot be interrupted in.+type SafeProcesses r = Process r ': r+ -- | 'Exc'eptions containing 'Interrupt's. -- See 'handleInterrupts', 'exitOnInterrupt' or 'provideInterrupts' type Interrupts = Exc (Interrupt 'Recoverable) --- | This adds a layer of the 'Interrupts' effect on top of 'Process'-type InterruptableProcess e = Interrupts ': Process e ': e---- | Handle all 'Interrupt's of an 'InterruptableProcess' by+-- | Handle all 'Interrupt's of an 'Processes' by -- wrapping them up in 'interruptToExit' and then do a process 'Shutdown'. provideInterruptsShutdown-  :: forall e a . Eff (InterruptableProcess e) a -> Eff (ConsProcess e) a+  :: forall e a . Eff (Processes e) a -> Eff (SafeProcesses e) a provideInterruptsShutdown e = do   res <- provideInterrupts e   case res of@@ -902,7 +903,7 @@   :: forall r q    . (HasCallStack, SetMember Process (Process q) r, Member Interrupts r)   => ProcessTitle-  -> Eff (InterruptableProcess q) ()+  -> Eff (Processes q) ()   -> Eff r ProcessId spawn t child =   executeAndResumeOrThrow (Spawn @q t (provideInterruptsShutdown child))@@ -912,7 +913,7 @@   :: forall r q    . (HasCallStack, SetMember Process (Process q) r, Member Interrupts r)   => ProcessTitle-  -> Eff (InterruptableProcess q) ()+  -> Eff (Processes q) ()   -> Eff r () spawn_ t child = void (spawn t child) @@ -923,20 +924,20 @@   :: forall r q    . (HasCallStack, SetMember Process (Process q) r, Member Interrupts r)   => ProcessTitle-  -> Eff (InterruptableProcess q) ()+  -> Eff (Processes q) ()   -> Eff r ProcessId spawnLink t child =   executeAndResumeOrThrow (SpawnLink @q t (provideInterruptsShutdown child))  -- | Start a new process, the new process will execute an effect, the function -- will return immediately with a 'ProcessId'. The spawned process has only the--- /raw/ 'ConsProcess' effects. For non-library code 'spawn' might be better+-- /raw/ 'SafeProcesses' effects. For non-library code 'spawn' might be better -- suited. spawnRaw   :: forall r q    . (HasCallStack, SetMember Process (Process q) r, Member Interrupts r)   => ProcessTitle-  -> Eff (ConsProcess q) ()+  -> Eff (SafeProcesses q) ()   -> Eff r ProcessId spawnRaw t child = executeAndResumeOrThrow (Spawn @q t child) @@ -945,7 +946,7 @@   :: forall r q    . (HasCallStack, SetMember Process (Process q) r, Member Interrupts r)   => ProcessTitle-  -> Eff (ConsProcess q) ()+  -> Eff (SafeProcesses q) ()   -> Eff r () spawnRaw_ t = void . spawnRaw t 
src/Control/Eff/Concurrent/Process/ForkIOScheduler.hs view
@@ -14,10 +14,10 @@   ( schedule   , defaultMain   , defaultMainWithLogWriter-  , ProcEff-  , InterruptableProcEff-  , SchedulerIO-  , HasSchedulerIO+  , SafeEffects+  , Effects+  , BaseEffects+  , HasBaseEffects   ) where @@ -192,7 +192,7 @@ -- | Create a new 'SchedulerState' run an IO action, catching all exceptions, -- and when the actions returns, clean up and kill all processes. withNewSchedulerState-  :: (HasCallStack) => Eff SchedulerIO () -> Eff LoggingAndIo ()+  :: (HasCallStack) => Eff BaseEffects () -> Eff LoggingAndIo () withNewSchedulerState mainProcessAction = Safe.bracketWithError   (lift (atomically newSchedulerState))   (\exceptions schedulerState -> do@@ -213,7 +213,7 @@     return x   )  where-  tearDownScheduler :: Eff SchedulerIO ()+  tearDownScheduler :: Eff BaseEffects ()   tearDownScheduler = do     schedulerState <- getSchedulerState     let cancelTableVar = schedulerState ^. processCancellationTable@@ -243,28 +243,36 @@       )  -- | The concrete list of 'Eff'ects of processes compatible with this scheduler.--- This builds upon 'SchedulerIO'.-type ProcEff = ConsProcess SchedulerIO+-- This builds upon 'BaseEffects'.+--+-- @since 0.25.0+type SafeEffects = SafeProcesses BaseEffects --- | The concrete list of the effects, that the 'Process' uses-type InterruptableProcEff = InterruptableProcess SchedulerIO+-- | The 'Eff'ects for interruptable, concurrent processes, scheduled via 'forkIO'.+--+-- @since 0.25.0+type Effects = Processes BaseEffects  -- | Type class constraint to indicate that an effect union contains the -- effects required by every process and the scheduler implementation itself.-type HasSchedulerIO r = (HasCallStack, Lifted IO r, SchedulerIO <:: r)+--+-- @since 0.25.0+type HasBaseEffects r = (HasCallStack, Lifted IO r, BaseEffects <:: r)  -- | The concrete list of 'Eff'ects for this scheduler implementation.-type SchedulerIO = (Reader SchedulerState : LoggingAndIo)+--+-- @since 0.25.0+type BaseEffects = Reader SchedulerState : LoggingAndIo  -- | Start the message passing concurrency system then execute a 'Process' on--- top of 'SchedulerIO' effect. All logging is sent to standard output.-defaultMain :: HasCallStack => Eff InterruptableProcEff () -> IO ()+-- top of 'BaseEffects' effect. All logging is sent to standard output.+defaultMain :: HasCallStack => Eff Effects () -> IO () defaultMain = defaultMainWithLogWriter consoleLogWriter  -- | Start the message passing concurrency system then execute a 'Process' on--- top of 'SchedulerIO' effect. All logging is sent to standard output.+-- top of 'BaseEffects' effect. All logging is sent to standard output. defaultMainWithLogWriter-  :: HasCallStack => LogWriter IO -> Eff InterruptableProcEff () -> IO ()+  :: HasCallStack => LogWriter IO -> Eff Effects () -> IO () defaultMainWithLogWriter lw =   runLift . withLogging lw . withAsyncLogWriter (1024 :: Int) . schedule @@ -273,18 +281,18 @@ handleProcess   :: (HasCallStack)   => ProcessInfo-  -> Eff ProcEff (Interrupt 'NoRecovery)-  -> Eff SchedulerIO (Interrupt 'NoRecovery)+  -> Eff SafeEffects (Interrupt 'NoRecovery)+  -> Eff BaseEffects (Interrupt 'NoRecovery) handleProcess myProcessInfo actionToRun = fix   (handle_relay' singleStep (\er _nextRef -> return er))   actionToRun   0  where   singleStep-    :: (Eff ProcEff xx -> (Int -> Eff SchedulerIO (Interrupt 'NoRecovery)))-    -> Arrs ProcEff x xx-    -> Process SchedulerIO x-    -> (Int -> Eff SchedulerIO (Interrupt 'NoRecovery))+    :: (Eff SafeEffects xx -> (Int -> Eff BaseEffects (Interrupt 'NoRecovery)))+    -> Arrs SafeEffects x xx+    -> Process BaseEffects x+    -> (Int -> Eff BaseEffects (Interrupt 'NoRecovery))   singleStep k q p !nextRef = stepProcessInterpreter     nextRef     p@@ -303,8 +311,8 @@   kontinueWith     :: forall s v a      . HasCallStack-    => (s -> Arr SchedulerIO v a)-    -> (s -> Arr SchedulerIO v a)+    => (s -> Arr BaseEffects v a)+    -> (s -> Arr BaseEffects v a)   kontinueWith kontinue !nextRef !result = do     setMyProcessState ProcessIdle     lift yield@@ -312,8 +320,8 @@   diskontinueWith     :: forall a      . HasCallStack-    => Arr SchedulerIO (Interrupt 'NoRecovery) a-    -> Arr SchedulerIO (Interrupt 'NoRecovery) a+    => Arr BaseEffects (Interrupt 'NoRecovery) a+    -> Arr BaseEffects (Interrupt 'NoRecovery) a   diskontinueWith diskontinue !reason = do     setMyProcessState ProcessShuttingDown     diskontinue reason@@ -321,10 +329,10 @@     :: forall v a      . HasCallStack     => Int-    -> Process SchedulerIO v-    -> (Int -> Arr SchedulerIO v a)-    -> Arr SchedulerIO (Interrupt 'NoRecovery) a-    -> Eff SchedulerIO a+    -> Process BaseEffects v+    -> (Int -> Arr BaseEffects v a)+    -> Arr BaseEffects (Interrupt 'NoRecovery) a+    -> Eff BaseEffects a   stepProcessInterpreter !nextRef !request kontinue diskontinue =     tryTakeNextShutdownRequest >>= maybe       noShutdownRequested@@ -361,10 +369,10 @@   interpretRequestAfterShutdownRequest     :: forall v a      . HasCallStack-    => Arr SchedulerIO (Interrupt 'NoRecovery) a+    => Arr BaseEffects (Interrupt 'NoRecovery) a     -> Interrupt 'NoRecovery-    -> Process SchedulerIO v-    -> Eff SchedulerIO a+    -> Process BaseEffects v+    -> Eff BaseEffects a   interpretRequestAfterShutdownRequest diskontinue shutdownRequest = \case     SendMessage   _ _ -> diskontinue shutdownRequest     SendInterrupt _ _ -> diskontinue shutdownRequest@@ -387,11 +395,11 @@   interpretRequestAfterInterruptRequest     :: forall v a      . HasCallStack-    => Arr SchedulerIO v a-    -> Arr SchedulerIO (Interrupt 'NoRecovery) a+    => Arr BaseEffects v a+    -> Arr BaseEffects (Interrupt 'NoRecovery) a     -> Interrupt 'Recoverable-    -> Process SchedulerIO v-    -> Eff SchedulerIO a+    -> Process BaseEffects v+    -> Eff BaseEffects a   interpretRequestAfterInterruptRequest kontinue diskontinue interruptRequest =     \case       SendMessage   _     _ -> kontinue (Interrupted interruptRequest)@@ -416,11 +424,11 @@   interpretRequest     :: forall v a      . HasCallStack-    => (Int -> Arr SchedulerIO v a)-    -> Arr SchedulerIO (Interrupt 'NoRecovery) a+    => (Int -> Arr BaseEffects v a)+    -> Arr BaseEffects (Interrupt 'NoRecovery) a     -> Int-    -> Process SchedulerIO v-    -> Eff SchedulerIO a+    -> Process BaseEffects v+    -> Eff BaseEffects a   interpretRequest kontinue diskontinue nextRef = \case     SendMessage toPid msg ->       interpretSend toPid msg >>= kontinue nextRef . ResumeWith@@ -525,7 +533,7 @@         >>= lift         .   atomically         .   enqueueShutdownRequest toPid msg-    interpretFlush :: Eff SchedulerIO (ResumeProcess [StrictDynamic])+    interpretFlush :: Eff BaseEffects (ResumeProcess [StrictDynamic])     interpretFlush = do       setMyProcessState ProcessBusyReceiving       lift $ atomically $ do@@ -534,7 +542,7 @@         return (ResumeWith (toList (myMessageQ ^. incomingMessages)))     interpretReceive       :: MessageSelector b-      -> Eff SchedulerIO (Either (Interrupt 'NoRecovery) (ResumeProcess b))+      -> Eff BaseEffects (Either (Interrupt 'NoRecovery) (ResumeProcess b))     interpretReceive f = do       setMyProcessState ProcessBusyReceiving       lift $ atomically $ do@@ -561,9 +569,9 @@         (runMessageSelector f m)  -- | This is the main entry point to running a message passing concurrency--- application. This function takes a 'Process' on top of the 'SchedulerIO'+-- application. This function takes a 'Process' on top of the 'BaseEffects' -- effect for concurrent logging.-schedule :: (HasCallStack) => Eff InterruptableProcEff () -> Eff LoggingAndIo ()+schedule :: (HasCallStack) => Eff Effects () -> Eff LoggingAndIo () schedule procEff =   liftBaseWith       (\runS -> Async.withAsync@@ -585,8 +593,8 @@   :: (HasCallStack)   => Maybe ProcessInfo   -> ProcessTitle-  -> Eff ProcEff ()-  -> Eff SchedulerIO (ProcessId, Async (Interrupt 'NoRecovery))+  -> Eff SafeEffects ()+  -> Eff BaseEffects (ProcessId, Async (Interrupt 'NoRecovery)) spawnNewProcess mLinkedParent title mfa = do   schedulerState <- getSchedulerState   procInfo       <- allocateProcInfo schedulerState@@ -619,7 +627,7 @@           (maybe (Just (T.pack (printf "% 9s" (show pid)))) Just)     in  censorLogs @IO addProcessId   triggerProcessLinksAndMonitors-    :: ProcessId -> Interrupt e -> TVar (Set ProcessId) -> Eff SchedulerIO ()+    :: ProcessId -> Interrupt e -> TVar (Set ProcessId) -> Eff BaseEffects ()   triggerProcessLinksAndMonitors !pid !reason !linkSetVar = do     schedulerState <- getSchedulerState     lift $ atomically $ triggerAndRemoveMonitor pid@@ -670,7 +678,7 @@   doForkProc     :: ProcessInfo     -> SchedulerState-    -> Eff SchedulerIO (Async (Interrupt 'NoRecovery))+    -> Eff BaseEffects (Async (Interrupt 'NoRecovery))   doForkProc procInfo schedulerState = control     (\inScheduler -> do       let cancellationsVar = schedulerState ^. processCancellationTable@@ -723,7 +731,7 @@       return reason  -- * Scheduler Accessor-getSchedulerState :: HasSchedulerIO r => Eff r SchedulerState+getSchedulerState :: HasBaseEffects r => Eff r SchedulerState getSchedulerState = ask  enqueueMessageOtherProcess
src/Control/Eff/Concurrent/Process/Interactive.hs view
@@ -50,14 +50,14 @@ newtype SchedulerSession r = SchedulerSession (TMVar (SchedulerQueue r))  newtype SchedulerQueue r =-  SchedulerQueue (TChan (Eff (InterruptableProcess r) (Maybe String)))+  SchedulerQueue (TChan (Eff (Processes r) (Maybe String)))  -- | Fork a scheduler with a process that communicates with it via 'MVar', -- which is also the reason for the @Lift IO@ constraint. forkInteractiveScheduler   :: forall r    . (SetMember Lift (Lift IO) r)-  => (Eff (InterruptableProcess r) () -> IO ())+  => (Eff (Processes r) () -> IO ())   -> IO (SchedulerSession r) forkInteractiveScheduler ioScheduler = do   inQueue  <- newTChanIO@@ -74,7 +74,7 @@   return (SchedulerSession queueVar)  where   readEvalPrintLoop-    :: TMVar (SchedulerQueue r) -> Eff (InterruptableProcess r) ()+    :: TMVar (SchedulerQueue r) -> Eff (Processes r) ()   readEvalPrintLoop queueVar = do     nextActionOrExit <- readAction     case nextActionOrExit of@@ -107,7 +107,7 @@   :: forall r a    . (SetMember Lift (Lift IO) r)   => SchedulerSession r-  -> Eff (InterruptableProcess r) a+  -> Eff (Processes r) a   -> IO a submit (SchedulerSession qVar) theAction = do   mResVar <- timeout 5000000 $ atomically
src/Control/Eff/Concurrent/Process/SingleThreadedScheduler.hs view
@@ -1,11 +1,20 @@ -- | A coroutine based, single threaded scheduler for 'Process'es. module Control.Eff.Concurrent.Process.SingleThreadedScheduler   ( scheduleM-  , schedulePure-  , scheduleIO   , scheduleMonadIOEff   , scheduleIOWithLogging-  , defaultMainSingleThreaded+  , schedulePure+  , PureEffects+  , PureSafeEffects+  , PureBaseEffects+  , HasPureBaseEffects+  , defaultMain+  , defaultMainWithLogWriter+  , scheduleIO+  , EffectsIo+  , SafeEffectsIo+  , BaseEffectsIo+  , HasBaseEffectsIo   ) where @@ -209,7 +218,7 @@ -- -- @since 0.3.0.2 schedulePure-  :: Eff (InterruptableProcess '[Logs, LogWriterReader PureLogWriter]) a+  :: Eff (Processes '[Logs, LogWriterReader PureLogWriter]) a   -> Either (Interrupt 'NoRecovery) a schedulePure e = run (scheduleM (withSomeLogging @PureLogWriter) (return ()) e) @@ -220,7 +229,7 @@ scheduleIO   :: MonadIO m   => (forall b . Eff r b -> Eff '[Lift m] b)-  -> Eff (InterruptableProcess r) a+  -> Eff (Processes r) a   -> m (Either (Interrupt 'NoRecovery) a) scheduleIO r = scheduleM (runLift . r) (liftIO yield) @@ -230,7 +239,7 @@ -- @since 0.3.0.2 scheduleMonadIOEff   :: MonadIO (Eff r)-  => Eff (InterruptableProcess r) a+  => Eff (Processes r) a   -> Eff r (Either (Interrupt 'NoRecovery) a) scheduleMonadIOEff = -- schedule (lift yield)   scheduleM id (liftIO yield)@@ -246,7 +255,7 @@ scheduleIOWithLogging   :: HasCallStack   => LogWriter IO-  -> Eff (InterruptableProcess LoggingAndIo) a+  -> Eff EffectsIo a   -> IO (Either (Interrupt 'NoRecovery) a) scheduleIOWithLogging h = scheduleIO (withLogging h) @@ -273,7 +282,7 @@   -> m () -- ^ An that performs a __yield__ w.r.t. the underlying effect   --  @r@. E.g. if @Lift IO@ is present, this might be:   --  @lift 'Control.Concurrent.yield'.-  -> Eff (InterruptableProcess r) a+  -> Eff (Processes r) a   -> m (Either (Interrupt 'NoRecovery) a) scheduleM r y e = do   c <- runAsCoroutinePure r (provideInterruptsShutdown e)@@ -359,12 +368,12 @@   :: forall v r m    . Monad m   => (forall a . Eff r a -> m a)-  -> Eff (ConsProcess r) v+  -> Eff (SafeProcesses r) v   -> m (OnYield r v) runAsCoroutinePure r = r . fix (handle_relay' cont (return . OnDone))  where-  cont :: (Eff (ConsProcess r) v -> Eff r (OnYield r v))-       -> Arrs (ConsProcess r) x v+  cont :: (Eff (SafeProcesses r) v -> Eff r (OnYield r v))+       -> Arrs (SafeProcesses r) x v        -> Process r x        -> Eff r (OnYield r v)   cont k q FlushMessages                = return (OnFlushMessages (k . qApp q))@@ -566,11 +575,80 @@       nextTargets <- _runEff sts $ traverse deliverTheGoodNews targets       return (nextTargets Seq.>< allButTarget) --- | Execute a 'Process' using 'scheduleM' on top of 'Lift' @IO@ and 'withLogging'--- @String@ effects.-defaultMainSingleThreaded :: HasCallStack => Eff (InterruptableProcess LoggingAndIo) () -> IO ()-defaultMainSingleThreaded =+-- | Execute a 'Process' using 'scheduleM' on top of 'Lift' @IO@.+-- All logging is written to the console using 'consoleLogWriter'.+--+-- To use another 'LogWriter' use 'defaultMainWithLogWriter' instead.+defaultMain :: HasCallStack => Eff EffectsIo () -> IO ()+defaultMain =   void     . runLift     . withLogging consoleLogWriter     . scheduleMonadIOEff++-- | Execute a 'Process' using 'scheduleM' on top of 'Lift' @IO@.+-- All logging is written using the given 'LogWriter'.+--+-- @since 0.25.0+defaultMainWithLogWriter :: HasCallStack => LogWriter IO -> Eff EffectsIo () -> IO ()+defaultMainWithLogWriter lw =+  void+    . runLift+    . withLogging lw+    . scheduleMonadIOEff+++-- | The effect list for 'Process' effects in the single threaded pure scheduler.+--+-- See 'PureBaseEffects' and 'Processes'+--+-- @since 0.25.0+type PureEffects = Processes PureBaseEffects++-- | The effect list for 'Process' effects in the single threaded pure scheduler.+--  This is like 'SafeProcesses', no 'Interrupts' are present.+--+-- See 'PureBaseEffects' and 'SafeProcesses'+--+-- @since 0.25.0+type PureSafeEffects = SafeProcesses PureBaseEffects++-- | The effect list for a pure, single threaded scheduler contains only+-- 'Logs' and the 'LogWriterReader' for 'PureLogWriter'.+--+-- @since 0.25.0+type PureBaseEffects = '[Logs, LogWriterReader PureLogWriter]++-- | Constraint for the existence of the underlying scheduler effects.+--+-- See 'PureBaseEffects'+--+-- @since 0.25.0+type HasPureBaseEffects e = (HasCallStack, PureBaseEffects <:: e)++-- | The effect list for 'Process' effects in the single threaded scheduler.+--+-- See 'BaseEffectsIo'+--+-- @since 0.25.0+type EffectsIo = Processes BaseEffectsIo++-- | The effect list for 'Process' effects in the single threaded scheduler.+--  This is like 'SafeProcesses', no 'Interrupts' are present.+--+-- See 'BaseEffectsIo'.+--+-- @since 0.25.0+type SafeEffectsIo = SafeProcesses BaseEffectsIo++-- | The effect list for the underlying scheduler.+--+-- See 'LoggingAndIo'+--+-- @since 0.25.0+type BaseEffectsIo = LoggingAndIo++-- | Constraint for the existence of the underlying scheduler effects.+--+-- @since 0.25.0+type HasBaseEffectsIo e = (HasCallStack, Lifted IO e, LoggingAndIo <:: e)
src/Control/Eff/Concurrent/Protocol/EffectfulServer.hs view
@@ -65,8 +65,8 @@   -- | Effects of the implementation   --   -- @since 0.24.1-  type Effects a e :: [Type -> Type]-  type Effects a e = e+  type ServerEffects a e :: [Type -> Type]+  type ServerEffects a e = e    -- | Return the 'ProcessTitle'.   --@@ -77,15 +77,15 @@   serverTitle _ = fromString $ prettyTypeableShows (typeRep (Proxy @(ServerPdu a))) "-server"    -- | Process the effects of the implementation-  runEffects :: Init a e -> Eff (Effects a e) x -> Eff e x+  runEffects :: Init a e -> Eff (ServerEffects a e) x -> Eff e x -  default runEffects :: Effects a e ~ e => Init a e -> Eff (Effects a e) x -> Eff e x+  default runEffects :: ServerEffects a e ~ e => Init a e -> Eff (ServerEffects a e) x -> Eff e x   runEffects = const id    -- | Update the 'Model' based on the 'Event'.-  onEvent :: Init a e -> Event (ServerPdu a) -> Eff (Effects a e) ()+  onEvent :: Init a e -> Event (ServerPdu a) -> Eff (ServerEffects a e) () -  default onEvent :: (Show (Init a e),  Member Logs (Effects a e)) => Init a e -> Event (ServerPdu a) -> Eff (Effects a e) ()+  default onEvent :: (Show (Init a e),  Member Logs (ServerEffects a e)) => Init a e -> Event (ServerPdu a) -> Eff (ServerEffects a e) ()   onEvent i e = logInfo ("unhandled: " <> T.pack (show i) <> " " <> T.pack (show e))  @@ -94,15 +94,15 @@ -- @since 0.24.0 start   :: forall a q h-  . ( Server a (InterruptableProcess q)+  . ( Server a (Processes q)     , Typeable a     , Typeable (ServerPdu a)-    , LogsTo h (InterruptableProcess q)-    , SetMember Process (Process q) (Effects a (InterruptableProcess q))-    , Member Interrupts             (Effects a (InterruptableProcess q))+    , LogsTo h (Processes q)+    , SetMember Process (Process q) (ServerEffects a (Processes q))+    , Member Interrupts             (ServerEffects a (Processes q))     , HasCallStack)-  => Init a (InterruptableProcess q)-  -> Eff (InterruptableProcess q) (Endpoint (ServerPdu a))+  => Init a (Processes q)+  -> Eff (Processes q) (Endpoint (ServerPdu a)) start a = asEndpoint <$> spawn (serverTitle a) (protocolServerLoop a)  -- | Execute the server loop.@@ -112,13 +112,13 @@   :: forall a q h   . ( Typeable a     , Typeable (ServerPdu a)-    , Server a (InterruptableProcess q)-    , LogsTo h (InterruptableProcess q)-    , SetMember Process (Process q) (Effects a (InterruptableProcess q))-    , Member Interrupts (Effects a (InterruptableProcess q))+    , Server a (Processes q)+    , LogsTo h (Processes q)+    , SetMember Process (Process q) (ServerEffects a (Processes q))+    , Member Interrupts (ServerEffects a (Processes q))     , HasCallStack)-  => Init a (InterruptableProcess q)-  -> Eff (InterruptableProcess q) (Endpoint (ServerPdu a))+  => Init a (Processes q)+  -> Eff (Processes q) (Endpoint (ServerPdu a)) startLink a = asEndpoint <$> spawnLink (serverTitle a) (protocolServerLoop a)  -- | Execute the server loop.@@ -126,14 +126,14 @@ -- @since 0.24.0 protocolServerLoop      :: forall q h a-     . ( Server a (InterruptableProcess q)-       , LogsTo h (InterruptableProcess q)-       , SetMember Process (Process q) (Effects a (InterruptableProcess q))-       , Member Interrupts (Effects a (InterruptableProcess q))+     . ( Server a (Processes q)+       , LogsTo h (Processes q)+       , SetMember Process (Process q) (ServerEffects a (Processes q))+       , Member Interrupts (ServerEffects a (Processes q))        , Typeable a        , Typeable (ServerPdu a)        )-  => Init a (InterruptableProcess q) -> Eff (InterruptableProcess q) ()+  => Init a (Processes q) -> Eff (Processes q) () protocolServerLoop a = do   myEp <- T.pack . show . asEndpoint @(ServerPdu a) <$> self   censorLogs (lmAddEp myEp) $ do@@ -154,7 +154,7 @@     handleInt i = onEvent a (OnInterrupt i) *> pure Nothing     mainLoop :: (Typeable a)       => Either (Interrupt 'Recoverable) (Event (ServerPdu a))-      -> Eff (Effects a (InterruptableProcess q)) (Maybe ())+      -> Eff (ServerEffects a (Processes q)) (Maybe ())     mainLoop (Left i) = handleInt i     mainLoop (Right i) = onEvent a i *> pure Nothing @@ -213,7 +213,7 @@ -- This is such a helper. The @GenServer@ is a record with to callbacks, -- and a 'Server' instance that simply invokes the given callbacks. ----- 'Server's that are directly based on 'LogIo' and 'InterruptableProcess' effects.+-- 'Server's that are directly based on 'LogIo' and 'Processes' effects. -- -- The name prefix @Gen@ indicates the inspiration from Erlang's @gen_server@ module. --@@ -221,7 +221,7 @@ data GenServer tag eLoop e where   MkGenServer     :: (TangibleGenServer tag eLoop e, HasCallStack) =>-    { genServerRunEffects :: forall x . (Eff eLoop x -> Eff (InterruptableProcess e) x)+    { genServerRunEffects :: forall x . (Eff eLoop x -> Eff (Processes e) x)     , genServerOnEvent :: Event tag -> Eff eLoop ()     } -> GenServer tag eLoop e   deriving Typeable@@ -254,10 +254,10 @@       . prettyTypeableShows (typeOf px)       ) -instance (TangibleGenServer tag eLoop e) => Server (GenServer (tag :: Type) eLoop e) (InterruptableProcess e) where+instance (TangibleGenServer tag eLoop e) => Server (GenServer (tag :: Type) eLoop e) (Processes e) where   type ServerPdu (GenServer tag eLoop e) = tag-  type Effects (GenServer tag eLoop e) (InterruptableProcess e) = eLoop-  data instance Init (GenServer tag eLoop e) (InterruptableProcess e) =+  type ServerEffects (GenServer tag eLoop e) (Processes e) = eLoop+  data instance Init (GenServer tag eLoop e) (Processes e) =         GenServerInit          { genServerCallbacks :: GenServer tag eLoop e          , genServerId :: GenServerId tag@@ -268,10 +268,10 @@       (genServerRunEffects cb m)   onEvent (GenServerInit cb _cId) req = genServerOnEvent cb req -instance NFData (Init (GenServer tag eLoop e) (InterruptableProcess e)) where+instance NFData (Init (GenServer tag eLoop e) (Processes e)) where   rnf (GenServerInit _ x) = rnf x -instance Typeable tag => Show (Init (GenServer tag eLoop e) (InterruptableProcess e)) where+instance Typeable tag => Show (Init (GenServer tag eLoop e) (Processes e)) where   showsPrec d (GenServerInit _ x) =     showParen (d>=10)       ( showsPrec 11 x@@ -294,12 +294,12 @@   :: forall tag eLoop e .      ( HasCallStack      , TangibleGenServer tag eLoop e-     , Server (GenServer tag eLoop e) (InterruptableProcess e)+     , Server (GenServer tag eLoop e) (Processes e)      )-  => (forall x . GenServerId tag -> Eff eLoop x -> Eff (InterruptableProcess e) x)+  => (forall x . GenServerId tag -> Eff eLoop x -> Eff (Processes e) x)   -> (GenServerId tag -> Event tag -> Eff eLoop ())   -> GenServerId tag-  -> Init (GenServer tag eLoop e) (InterruptableProcess e)+  -> Init (GenServer tag eLoop e) (Processes e) genServer initCb stepCb i =   GenServerInit     { genServerId = i
src/Control/Eff/Concurrent/Protocol/Observer/Queue.hs view
@@ -140,10 +140,10 @@      , TangiblePdu (Observer o) 'Asynchronous      , Member Logs q      , Lifted IO q-     , LogsTo h (InterruptableProcess q)+     , LogsTo h (Processes q)      , HasCallStack)   => ObservationQueue o-  -> Eff (InterruptableProcess q) (Observer o)+  -> Eff (Processes q) (Observer o) spawnLinkObservationQueueWriter q = do   cbo <- startLink (MkObservationQueue q)   pure (toObserver cbo)
src/Control/Eff/Concurrent/Protocol/StatefulServer.hs view
@@ -81,19 +81,19 @@   -- | Return an initial 'Model' and 'Settings'   setup ::        StartArgument a q-    -> Eff (InterruptableProcess q) (Model a, Settings a)+    -> Eff (Processes q) (Model a, Settings a)    default setup ::        (Default (Model a), Default (Settings a))     => StartArgument a q-    -> Eff (InterruptableProcess q) (Model a, Settings a)+    -> Eff (Processes q) (Model a, Settings a)   setup _ = pure (def, def)    -- | Update the 'Model' based on the 'Event'.   update ::        StartArgument a q     -> Effectful.Event (Protocol a)-    -> Eff (ModelState a ': SettingsReader a ': InterruptableProcess q) ()+    -> Eff (ModelState a ': SettingsReader a ': Processes q) ()  -- | This type is used to build stateful 'EffectfulServer' instances. --@@ -102,10 +102,10 @@ -- @since 0.24.0 data Stateful a deriving Typeable -instance Server a q => Effectful.Server (Stateful a) (InterruptableProcess q) where-  data Init (Stateful a) (InterruptableProcess q) = Init (StartArgument a q)+instance Server a q => Effectful.Server (Stateful a) (Processes q) where+  data Init (Stateful a) (Processes q) = Init (StartArgument a q)   type ServerPdu (Stateful a) = Protocol a-  type Effects (Stateful a) (InterruptableProcess q) = ModelState a ': SettingsReader a ': InterruptableProcess q+  type ServerEffects (Stateful a) (Processes q) = ModelState a ': SettingsReader a ': Processes q    runEffects (Init sa) m = do     (st, env) <- setup sa@@ -121,11 +121,11 @@   :: forall a q h   . ( HasCallStack     , Typeable a-    , LogsTo h (InterruptableProcess q)-    , Effectful.Server (Stateful a) (InterruptableProcess q)+    , LogsTo h (Processes q)+    , Effectful.Server (Stateful a) (Processes q)     , Server a q     )-  => StartArgument a q -> Eff (InterruptableProcess q) (Endpoint (Protocol a))+  => StartArgument a q -> Eff (Processes q) (Endpoint (Protocol a)) start = Effectful.start . Init  -- | Execute the server loop.@@ -135,11 +135,11 @@   :: forall a q h   . ( HasCallStack     , Typeable a-    , LogsTo h (InterruptableProcess q)-    , Effectful.Server (Stateful a) (InterruptableProcess q)+    , LogsTo h (Processes q)+    , Effectful.Server (Stateful a) (Processes q)     , Server a q     )-  => StartArgument a q -> Eff (InterruptableProcess q) (Endpoint (Protocol a))+  => StartArgument a q -> Eff (Processes q) (Endpoint (Protocol a)) startLink = Effectful.startLink . Init  
src/Control/Eff/Concurrent/Protocol/Supervisor.hs view
@@ -252,13 +252,13 @@ startSupervisor   :: forall p e   . ( HasCallStack-    , LogsTo IO (InterruptableProcess e)+    , LogsTo IO (Processes e)     , Lifted IO e     , TangibleSup p     , Server (Sup p) e     )   => StartArgument (Sup p) e-  -> Eff (InterruptableProcess e) (Endpoint (Sup p))+  -> Eff (Processes e) (Endpoint (Sup p)) startSupervisor = Server.start  -- | Stop the supervisor and shutdown all processes.
+ src/Control/Eff/Concurrent/Pure.hs view
@@ -0,0 +1,72 @@+-- | Concurrent, communicating processes, executed using a pure, single-threaded scheduler.+--+-- This module re-exports most of the library.+--+-- There are several /scheduler/ implementations to choose from.+--+-- This module re-exports the pure parts of "Control.Eff.Concurrent.Process.SingleThreadedScheduler".+--+-- To use another scheduler implementation, don't import this module, but instead+-- import one of:+--+-- * "Control.Eff.Concurrent"+-- * "Control.Eff.Concurrent.SingleThreaded"+--+-- @since 0.25.0+module Control.Eff.Concurrent.Pure+  ( -- * Generic functions and type for Processes and Messages+    module Control.Eff.Concurrent+    -- * Scheduler+  , schedule+  , Effects+  , SafeEffects+  , BaseEffects+  , HasBaseEffects+  -- * External Libraries+  ) where++import Control.Eff+import Control.Eff.Concurrent                  hiding+                                                ( schedule+                                                , defaultMain+                                                , defaultMainWithLogWriter+                                                , Effects+                                                , SafeEffects+                                                , BaseEffects+                                                , HasBaseEffects+                                                )++import Control.Eff.Concurrent.Process.SingleThreadedScheduler++-- | Run the 'Effects' using a single threaded, coroutine based, pure scheduler+-- from "Control.Eff.Concurrent.Process.SingleThreadedScheduler".+--+-- @since 0.25.0+schedule :: Eff Effects a -> Either (Interrupt 'NoRecovery) a+schedule = schedulePure++-- | The effect list for 'Process' effects in the single threaded pure scheduler.+--+-- See 'PureEffects'+--+-- @since 0.25.0+type Effects = PureEffects++-- | The effect list for 'Process' effects in the single threaded pure scheduler.+--  This is like 'SafeProcesses', no 'Interrupts' are present.+--+-- See 'PureSafeEffects'+--+-- @since 0.25.0+type SafeEffects = PureSafeEffects++-- | The effect list for the underlying scheduler.+--+-- @since 0.25.0+type BaseEffects = PureBaseEffects++-- | Constraint for the existence of the underlying scheduler effects.+--+-- @since 0.25.0+type HasBaseEffects e = HasPureBaseEffects e+
+ src/Control/Eff/Concurrent/SingleThreaded.hs view
@@ -0,0 +1,84 @@+-- | Concurrent, communicating processes, executed using a single-threaded+-- scheduler, with support for 'IO' and 'Logs'.+--+-- This module re-exports most of the library.+--+-- There are several /scheduler/ implementations to choose from.+--+-- This module re-exports the impure parts of "Control.Eff.Concurrent.Process.SingleThreadedScheduler".+--+-- To use another scheduler implementation, don't import this module, but instead+-- import one of:+--+-- * "Control.Eff.Concurrent"+-- * "Control.Eff.Concurrent.Pure"+--+-- @since 0.25.0+module Control.Eff.Concurrent.SingleThreaded+  ( -- * Generic functions and type for Processes and Messages+    module Control.Eff.Concurrent+    -- * Scheduler+  , schedule+  , defaultMain+  , defaultMainWithLogWriter+  , Effects+  , SafeEffects+  , BaseEffects+  , HasBaseEffects+  -- * External Libraries+  ) where++import Control.Eff+import Control.Eff.Concurrent                  hiding+                                                ( schedule+                                                , defaultMain+                                                , defaultMainWithLogWriter+                                                , Effects+                                                , SafeEffects+                                                , BaseEffects+                                                , HasBaseEffects+                                                )++import Control.Eff.Concurrent.Process.SingleThreadedScheduler+import GHC.Stack (HasCallStack)++-- | Run the 'Effects' using a single threaded, coroutine based, scheduler+-- from "Control.Eff.Concurrent.Process.SingleThreadedScheduler".+--+-- @since 0.25.0+schedule+  :: HasCallStack+  => LogWriter IO+  -> Eff Effects a+  -> IO (Either (Interrupt 'NoRecovery) a)+schedule = scheduleIOWithLogging++-- | The effect list for 'Process' effects in the single threaded scheduler.+--+-- See 'EffectsIo'+--+-- @since 0.25.0+type Effects = EffectsIo++-- | The effect list for 'Process' effects in the single threaded scheduler.+--  This is like 'SafeProcesses', no 'Interrupts' are present.+--+-- See 'SafeEffectsIo'+--+-- @since 0.25.0+type SafeEffects = SafeEffectsIo++-- | The effect list for the underlying scheduler.+--+-- See 'BaseEffectsIo'+--+-- @since 0.25.0+type BaseEffects = BaseEffectsIo++-- | Constraint for the existence of the underlying scheduler effects.+--+-- See 'HasBaseEffectsIo'+--+-- @since 0.25.0+type HasBaseEffects e = HasBaseEffectsIo e+
test/Common.hs view
@@ -18,7 +18,7 @@ timeoutSeconds :: Integer -> Timeout timeoutSeconds seconds = Timeout (seconds * 1000000) (show seconds ++ "s") -runTestCase :: TestName -> Eff InterruptableProcEff () -> TestTree+runTestCase :: TestName -> Eff Effects () -> TestTree runTestCase msg =   testCase msg .   runLift . withTraceLogging "unit-tests" local0 allLogMessages . Scheduler.schedule . handleInterrupts onInt@@ -36,9 +36,9 @@     _ -> untilInterrupted pa  scheduleAndAssert ::-     forall r. (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())-  -> ((String -> Bool -> Eff (InterruptableProcess r) ()) -> Eff (InterruptableProcess r) ())+     forall r. (LogIo r)+  => IO (Eff (Processes r) () -> IO ())+  -> ((String -> Bool -> Eff (Processes r) ()) -> Eff (Processes r) ())   -> IO () scheduleAndAssert schedulerFactory testCaseAction =   withFrozenCallStack $ do@@ -52,8 +52,8 @@  applySchedulerFactory ::      forall r. (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())-  -> Eff (InterruptableProcess r) ()+  => IO (Eff (Processes r) () -> IO ())+  -> Eff (Processes r) ()   -> IO () applySchedulerFactory factory procAction = do   scheduler <- factory
test/ForkIOScheduler.hs view
@@ -53,21 +53,21 @@           assertBool "the other process was still running" wasStillRunningP1   | (busyWith , busyEffect) <-     [ ( "receiving"-      , void (send (ReceiveSelectedMessage @SchedulerIO selectAnyMessage))+      , void (send (ReceiveSelectedMessage @BaseEffects selectAnyMessage))       )     , ( "sending"-      , void (send (SendMessage @SchedulerIO 44444 (toStrictDynamic ("test message" :: String))))+      , void (send (SendMessage @BaseEffects 44444 (toStrictDynamic ("test message" :: String))))       )     , ( "sending shutdown"-      , void (send (SendShutdown @SchedulerIO 44444 ExitNormally))+      , void (send (SendShutdown @BaseEffects 44444 ExitNormally))       )-    , ("selfpid-ing", void (send (SelfPid @SchedulerIO)))+    , ("selfpid-ing", void (send (SelfPid @BaseEffects)))     , ( "spawn-ing"       , void         (send-          (Spawn @SchedulerIO  "test"+          (Spawn @BaseEffects  "test"             (void-              (send (ReceiveSelectedMessage @SchedulerIO selectAnyMessage))+              (send (ReceiveSelectedMessage @BaseEffects selectAnyMessage))             )           )         )
test/Interactive.hs view
@@ -15,19 +15,19 @@ test_interactive :: TestTree test_interactive = setTravisTestOptions $ testGroup   "Interactive"-  [ testGroup "SingleThreadedScheduler" $ allTests SingleThreaded.defaultMainSingleThreaded+  [ testGroup "SingleThreadedScheduler" $ allTests SingleThreaded.defaultMain   , testGroup "ForkIOScheduler" $ allTests ForkIOScheduler.defaultMain   ]  allTests   :: SetMember Lift (Lift IO) r-  => (Eff (InterruptableProcess r) () -> IO ())+  => (Eff (Processes r) () -> IO ())   -> [TestTree] allTests scheduler = [happyCaseTest scheduler]  happyCaseTest   :: SetMember Lift (Lift IO) r-  => (Eff (InterruptableProcess r) () -> IO ())+  => (Eff (Processes r) () -> IO ())   -> TestTree happyCaseTest scheduler =   testCase "start, wait and stop interactive scheduler" $ do
test/ProcessBehaviourTestCases.hs view
@@ -65,7 +65,7 @@ allTests   :: forall r    . (Lifted IO r, LogsTo IO r, Typeable r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree allTests schedulerFactory = localOption   (timeoutSeconds 300)@@ -124,7 +124,7 @@ returnToSenderServer   :: forall q    . (HasCallStack, Lifted IO q, LogsTo IO q, Member Logs q, Typeable q)-  => Eff (InterruptableProcess q) (Endpoint ReturnToSender)+  => Eff (Processes q) (Endpoint ReturnToSender) returnToSenderServer = start   (genServer @ReturnToSender     (const id)@@ -148,7 +148,7 @@ selectiveReceiveTests   :: forall r    . (Lifted IO r, LogsTo IO r, Typeable r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree selectiveReceiveTests schedulerFactory = setTravisTestOptions   (testGroup@@ -160,7 +160,7 @@           nMax = 10           receiverLoop donePid = go nMax            where-            go :: Int -> Eff (InterruptableProcess r) ()+            go :: Int -> Eff (Processes r) ()             go 0 = sendMessage donePid True             go n = do               void $ receiveSelectedMessage (filterMessage (== n))@@ -201,7 +201,7 @@ yieldLoopTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree yieldLoopTests schedulerFactory =   let maxN = 100000@@ -243,7 +243,7 @@ pingPongTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree pingPongTests schedulerFactory = testGroup   "Yield Tests"@@ -318,7 +318,7 @@ errorTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree errorTests schedulerFactory = testGroup   "causing and handling errors"@@ -363,7 +363,7 @@ concurrencyTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree concurrencyTests schedulerFactory =   let n = 100@@ -474,7 +474,7 @@ exitTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree exitTests schedulerFactory =   testGroup "process exit tests"@@ -624,7 +624,7 @@ sendShutdownTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree sendShutdownTests schedulerFactory = testGroup   "sendShutdown"@@ -717,7 +717,7 @@ linkingTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree linkingTests schedulerFactory = setTravisTestOptions   (testGroup@@ -931,7 +931,7 @@ monitoringTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree monitoringTests schedulerFactory = setTravisTestOptions   (testGroup@@ -1001,7 +1001,7 @@ timerTests   :: forall r    . (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree timerTests schedulerFactory = setTravisTestOptions   (testGroup@@ -1057,7 +1057,7 @@  processDetailsTests ::      forall r. (Lifted IO r, LogsTo IO r)-  => IO (Eff (InterruptableProcess r) () -> IO ())+  => IO (Eff (Processes r) () -> IO ())   -> TestTree processDetailsTests schedulerFactory =   setTravisTestOptions
test/SingleThreadedScheduler.hs view
@@ -38,7 +38,7 @@ test_mainProcessSpawnsAChildAndExitsNormally = setTravisTestOptions     (testCase         "spawn a child and exit normally"-        (Scheduler.defaultMainSingleThreaded+        (Scheduler.defaultMain             (do                 void (spawn "test" (void receiveAnyMessage))                 void exitNormally@@ -52,7 +52,7 @@ test_mainProcessSpawnsAChildBothExitNormally = setTravisTestOptions     (testCase         "spawn a child and let it exit and exit"-        (Scheduler.defaultMainSingleThreaded+        (Scheduler.defaultMain             (do                 child <- spawn "test"                     (do
test/SupervisorTests.hs view
@@ -37,7 +37,7 @@                  () <- receiveMessage                  Sup.stopSupervisor sup              unlinkProcess testWorker-             sup <- receiveMessage :: Eff InterruptableProcEff  (Endpoint (Sup.Sup TestProtocol))+             sup <- receiveMessage :: Eff Effects  (Endpoint (Sup.Sup TestProtocol))              supAliveAfter1 <- isSupervisorAlive sup              logInfo ("still alive 1: " <> pack (show supAliveAfter1))              lift (supAliveAfter1 @=? True)@@ -264,7 +264,7 @@   | ExitWhenRequested   deriving Eq -instance Server TestProtocol SchedulerIO where+instance Server TestProtocol BaseEffects where   update (TestServerArgs testMode tId) evt =     case evt of       OnCast (TestInterruptWith i) -> do@@ -283,6 +283,6 @@             exitBecause (interruptToExit x)       _ ->         logDebug (pack (show tId) <> ": got some info: " <> pack (show evt))-  data instance StartArgument TestProtocol SchedulerIO = TestServerArgs TestProtocolServerMode Int+  data instance StartArgument TestProtocol BaseEffects = TestServerArgs TestProtocolServerMode Int  type instance ChildId TestProtocol = Int