patterns-0.1.0: src/Network/Mom/Patterns/Broker.hs
-------------------------------------------------------------------------------
-- |
-- Module : Network/Mom/Patterns/Broker.hs
-- Copyright : (c) Tobias Schoofs
-- License : LGPL
-- Stability : experimental
-- Portability: non-portable
--
-- Majordomo Service Broker
-------------------------------------------------------------------------------
module Network.Mom.Patterns.Broker (
-- * The Majordomo Pattern
-- $majordomo
-- * Majordomo \'Worker\'
-- $worker
module Network.Mom.Patterns.Broker.Server,
-- * Majordomo \'Client\'
-- $client
module Network.Mom.Patterns.Broker.Client,
-- * Majordomo \'Broker\'
-- $broker
module Network.Mom.Patterns.Broker.Broker,
-- * Majordomo common definitions
-- $common
module Network.Mom.Patterns.Broker.Common)
where
import Network.Mom.Patterns.Broker.Server
import Network.Mom.Patterns.Broker.Client
import Network.Mom.Patterns.Broker.Broker
import Network.Mom.Patterns.Broker.Common
{- $majordomo
The Majordomo pattern
defines a communication protocol
between clients and servers based
on a service broker that provides
* A central access point for all services
* A service infrastructure for services like
service discovery, configurations, data storage, /etc./
* Reliable communication based on heart-beats.
The broker package does not provide a pre-defined borker,
/i.e./ it does not contain an application.
Instead, it provides /API/s that can be used
to build brokers, even within the same process
as clients and workers.
The present module provides a convenience reexport of the three modules,
making up the majordomo pattern: server, client and broker.
There is also a \"common\" module with definitions relevant
for all three parties.
-}
{- $worker
The server module contains the server-side of the majordomo pattern.
Majordomo servers look like ordinary servers,
but use a different protocol for communicating
with the broker intervening between clients and servers.
-}
{- $client
The client module contains the client-side of the majordomo pattern.
Majordomo clients look very similar to ordinary clients,
but use a different protocol for communicating
with the broker intervening between clients and servers.
The code provided to a majordomo clients, however,
is exactly the same as the code provided to an ordinary client.
-}
{- $broker
The broker module contains the broker code.
The broker is implemented by means of streams,
very similar to servers and clients.
The functionality provided by the broker module
can be used to implement a standalone broker
or an in-process broker linked with its clients and servers.
Note, however,
that brokers must not share the same process
with other brokers, since, internally,
the broker module uses a global registry,
which would be shared among all brokers
in the same process as well.
-}
{- $common
The \"common\" module contains
protocol building blocks and
MDP-specific exceptions.
-}