base-4.7.0.0: Basic libraries

Safe HaskellTrustworthy
LanguageHaskell2010

GHC.Event

Contents

Description

This module provides scalable event notification for file descriptors and timeouts.

This module should be considered GHC internal.

  • ---------------------------------------------------------------------------

Synopsis

Types

data EventManagerSource

The event manager state.

Creation

getSystemEventManager :: IO (Maybe EventManager)Source

Retrieve the system event manager for the capability on which the calling thread is running.

This function always returns Just the current thread's event manager when using the threaded RTS and Nothing otherwise.

new :: Bool -> IO EventManagerSource

Create a new event manager.

Registering interest in I/O events

data EventSource

An I/O event.

Instances

evtRead :: EventSource

Data is available to be read.

evtWrite :: EventSource

The file descriptor is ready to accept a write.

type IOCallback = FdKey -> Event -> IO ()Source

Callback invoked on I/O events.

data FdKeySource

A file descriptor registration cookie.

Instances

registerFd :: EventManager -> IOCallback -> Fd -> Event -> IO FdKeySource

registerFd mgr cb fd evs registers interest in the events evs on the file descriptor fd. cb is called for each event that occurs. Returns a cookie that can be handed to unregisterFd.

registerFd_ :: EventManager -> IOCallback -> Fd -> Event -> IO (FdKey, Bool)Source

Register interest in the given events, without waking the event manager thread. The Bool return value indicates whether the event manager ought to be woken.

unregisterFd :: EventManager -> FdKey -> IO ()Source

Drop a previous file descriptor registration.

unregisterFd_ :: EventManager -> FdKey -> IO BoolSource

Drop a previous file descriptor registration, without waking the event manager thread. The return value indicates whether the event manager ought to be woken.

closeFd :: EventManager -> (Fd -> IO ()) -> Fd -> IO ()Source

Close a file descriptor in a race-safe way.

Registering interest in timeout events

type TimeoutCallback = IO ()Source

Callback invoked on timeout events.

data TimeoutKeySource

A timeout registration cookie.

Instances

registerTimeout :: TimerManager -> Int -> TimeoutCallback -> IO TimeoutKeySource

Register a timeout in the given number of microseconds. The returned TimeoutKey can be used to later unregister or update the timeout. The timeout is automatically unregistered after the given time has passed.

updateTimeout :: TimerManager -> TimeoutKey -> Int -> IO ()Source

Update an active timeout to fire in the given number of microseconds.

unregisterTimeout :: TimerManager -> TimeoutKey -> IO ()Source

Unregister an active timeout.