| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Eff.Concurrent.Process.Timer
Description
Functions for receive timeouts and delayed messages sending.
Based on the delay function.
Since: 0.12.0
Synopsis
- data TimerReference
- data TimerElapsed
- sendAfter :: forall r q message. (HasCallStack, HasProcesses r q, Typeable message, NFData message) => ProcessId -> Timeout -> (TimerReference -> message) -> Eff r TimerReference
- startTimer :: forall r q. (HasCallStack, HasProcesses r q) => Timeout -> Eff r TimerReference
- sendAfterWithTitle :: forall r q message. (HasCallStack, HasProcesses r q, Typeable message, NFData message) => ProcessTitle -> ProcessId -> Timeout -> (TimerReference -> message) -> Eff r TimerReference
- startTimerWithTitle :: forall r q. (HasCallStack, HasProcesses r q) => ProcessTitle -> Timeout -> Eff r TimerReference
- cancelTimer :: forall r q. (HasCallStack, HasProcesses r q) => TimerReference -> Eff r ()
- selectTimerElapsed :: TimerReference -> MessageSelector TimerElapsed
- receiveAfter :: forall a r q. (HasCallStack, HasProcesses r q, Typeable a, NFData a, Show a) => Timeout -> Eff r (Maybe a)
- receiveSelectedAfter :: forall a r q. (HasCallStack, HasProcesses r q, Show a, Typeable a) => MessageSelector a -> Timeout -> Eff r (Either TimerElapsed a)
- receiveSelectedWithMonitorAfter :: forall a r q. (HasCallStack, HasProcesses r q, Show a, Typeable a) => ProcessId -> MessageSelector a -> Timeout -> Eff r (Either (Either ProcessDown TimerElapsed) a)
- receiveAfterWithTitle :: forall a r q. (HasCallStack, HasProcesses r q, Typeable a, NFData a, Show a) => Timeout -> ProcessTitle -> Eff r (Maybe a)
- receiveSelectedAfterWithTitle :: forall a r q. (HasCallStack, HasProcesses r q, Show a, Typeable a) => MessageSelector a -> Timeout -> ProcessTitle -> Eff r (Either TimerElapsed a)
- receiveSelectedWithMonitorAfterWithTitle :: forall a r q. (HasCallStack, HasProcesses r q, Show a, Typeable a) => ProcessId -> MessageSelector a -> Timeout -> ProcessTitle -> Eff r (Either (Either ProcessDown TimerElapsed) a)
Documentation
data TimerReference Source #
The reference to a timer started by startTimer, required to stop
a timer via cancelTimer.
Since: 0.12.0
Instances
data TimerElapsed Source #
A value to be sent when timer started with startTimer has elapsed.
Since: 0.12.0
Instances
| Eq TimerElapsed Source # | |
Defined in Control.Eff.Concurrent.Process.Timer | |
| Ord TimerElapsed Source # | |
Defined in Control.Eff.Concurrent.Process.Timer Methods compare :: TimerElapsed -> TimerElapsed -> Ordering # (<) :: TimerElapsed -> TimerElapsed -> Bool # (<=) :: TimerElapsed -> TimerElapsed -> Bool # (>) :: TimerElapsed -> TimerElapsed -> Bool # (>=) :: TimerElapsed -> TimerElapsed -> Bool # max :: TimerElapsed -> TimerElapsed -> TimerElapsed # min :: TimerElapsed -> TimerElapsed -> TimerElapsed # | |
| Show TimerElapsed Source # | |
Defined in Control.Eff.Concurrent.Process.Timer Methods showsPrec :: Int -> TimerElapsed -> ShowS # show :: TimerElapsed -> String # showList :: [TimerElapsed] -> ShowS # | |
| NFData TimerElapsed Source # | |
Defined in Control.Eff.Concurrent.Process.Timer Methods rnf :: TimerElapsed -> () # | |
sendAfter :: forall r q message. (HasCallStack, HasProcesses r q, Typeable message, NFData message) => ProcessId -> Timeout -> (TimerReference -> message) -> Eff r TimerReference Source #
Send a message to a given process after waiting. The message is created by
applying the function parameter to the TimerReference, such that the
message can directly refer to the timer.
Since: 0.12.0
startTimer :: forall r q. (HasCallStack, HasProcesses r q) => Timeout -> Eff r TimerReference Source #
Start a new timer, after the time has elapsed, TimerElapsed is sent to
calling process. The message also contains the TimerReference returned by
this function. Use cancelTimer to cancel the timer. Use
selectTimerElapsed to receive the message using receiveSelectedMessage.
To receive messages with guarded with a timeout see receiveAfter.
Calls sendAfter under the hood.
Since: 0.12.0
sendAfterWithTitle :: forall r q message. (HasCallStack, HasProcesses r q, Typeable message, NFData message) => ProcessTitle -> ProcessId -> Timeout -> (TimerReference -> message) -> Eff r TimerReference Source #
Like sendAfter but with a user provided name for the timer process.
Since: 0.30.0
startTimerWithTitle :: forall r q. (HasCallStack, HasProcesses r q) => ProcessTitle -> Timeout -> Eff r TimerReference Source #
Start a new timer, after the time has elapsed, TimerElapsed is sent to
calling process. The message also contains the TimerReference returned by
this function. Use cancelTimer to cancel the timer. Use
selectTimerElapsed to receive the message using receiveSelectedMessage.
To receive messages with guarded with a timeout see receiveAfter.
This calls sendAfterWithTitle under the hood with TimerElapsed as
message.
Since: 0.30.0
cancelTimer :: forall r q. (HasCallStack, HasProcesses r q) => TimerReference -> Eff r () Source #
Cancel a timer started with startTimer.
Since: 0.12.0
selectTimerElapsed :: TimerReference -> MessageSelector TimerElapsed Source #
A MessageSelector matching TimerElapsed messages created by
startTimer.
Since: 0.12.0
receiveAfter :: forall a r q. (HasCallStack, HasProcesses r q, Typeable a, NFData a, Show a) => Timeout -> Eff r (Maybe a) Source #
Wait for a message of the given type for the given time. When no message
arrives in time, return Nothing. This is based on
receiveSelectedAfter.
Since: 0.12.0
receiveSelectedAfter :: forall a r q. (HasCallStack, HasProcesses r q, Show a, Typeable a) => MessageSelector a -> Timeout -> Eff r (Either TimerElapsed a) Source #
Wait for a message of the given type for the given time. When no message
arrives in time, return Left TimerElapsed. This is based on
selectTimerElapsed and startTimer.
Since: 0.12.0
receiveSelectedWithMonitorAfter :: forall a r q. (HasCallStack, HasProcesses r q, Show a, Typeable a) => ProcessId -> MessageSelector a -> Timeout -> Eff r (Either (Either ProcessDown TimerElapsed) a) Source #
Like receiveWithMonitor combined with receiveSelectedAfter.
Since: 0.22.0
receiveAfterWithTitle :: forall a r q. (HasCallStack, HasProcesses r q, Typeable a, NFData a, Show a) => Timeout -> ProcessTitle -> Eff r (Maybe a) Source #
Wait for a message of the given type for the given time. When no message
arrives in time, return Nothing. This is based on
receiveSelectedAfterWithTitle.
Since: 0.12.0
receiveSelectedAfterWithTitle :: forall a r q. (HasCallStack, HasProcesses r q, Show a, Typeable a) => MessageSelector a -> Timeout -> ProcessTitle -> Eff r (Either TimerElapsed a) Source #
Wait for a message of the given type for the given time. When no message
arrives in time, return Left TimerElapsed. This is based on
selectTimerElapsed and startTimerWithTitle.
Since: 0.12.0
receiveSelectedWithMonitorAfterWithTitle :: forall a r q. (HasCallStack, HasProcesses r q, Show a, Typeable a) => ProcessId -> MessageSelector a -> Timeout -> ProcessTitle -> Eff r (Either (Either ProcessDown TimerElapsed) a) Source #
Like receiveWithMonitorWithTitle combined with receiveSelectedAfterWithTitle.
Since: 0.30.0