daemons-0.1.1: Daemons in Haskell made fun and easy

Safe HaskellSafe-Infered

System.Daemon

Contents

Synopsis

Daemons

startDaemonSource

Arguments

:: (Serialize a, Serialize b) 
=> String

name

-> DaemonOptions

options

-> (a -> IO b)

handler

-> IO () 

Simple wrapper around startDaemonWithHandler which uses a simple function to respond to commands and doesn't deal with pipes.

The handler is just a function that takes a command and returns a response.

startDaemonWithHandlerSource

Arguments

:: String

name

-> DaemonOptions

options

-> Handler ()

handler

-> IO () 

Start a daemon running on the given port, using the given handler to respond to events. If the daemon is already running, just return.

The pidfile PidFile options will be created and locked. This function checks the pidfile to see if the daemon is already running.

The daemon will listen for incoming connections on all interfaces on daemonPort options.

The handler is a function that takes the reader and writer ByteString pipes and does something with them. See commandReceiver for an example handler.

Clients,

runClientSource

Arguments

:: (Serialize a, Serialize b) 
=> HostName

hostname

-> Port

port

-> a

command

-> IO (Maybe b) 

Send a command to the daemon running at the given network address and wait for a response.

This is a simple wrapper around runClientWithHandler that sends a single command and waits for a single response.

If the connection is closed before receiving a response, return Nothing.

runClientWithHandlerSource

Arguments

:: HostName

hostname

-> Port

port

-> Handler a

command

-> IO a 

Connect to the given network address and run the handler on the reader and wrier pipes for the socket.

The handler is a function that takes the reader and writer ByteString pipes and does something with them. For an example handler, see commandSender, which sends a command and waits for a response.

Types

data DaemonOptions Source

The configuration options of a daemon. See startDaemon for a description of each.

Constructors

DaemonOptions 

data PidFile Source

The location of the daemon's pidfile.

Constructors

InHome 
PidFile FilePath 

Helpers

bindPort :: Port -> IO SocketSource

Create a socket and bind it to the given port.

getSocket :: HostName -> Port -> IO SocketSource

Create a socket connected to the given network address.