-----------------------------------------------------------------------------
-- |
-- Module      :  Control.Distributed.Process.Execution
-- Copyright   :  (c) Tim Watson 2013 - 2014
-- License     :  BSD3 (see the file LICENSE)
--
-- Maintainer  :  Tim Watson <watson.timothy@gmail.com>
-- Stability   :  experimental
-- Portability :  non-portable (requires concurrency)
--
-- [Inter-Process Traffic Management]
--
-- The /Execution Framework/ provides tools for load regulation, workload
-- shedding and remote hand-off. The currently implementation provides only
-- a subset of the plumbing required, comprising tools for event management,
-- mailbox buffering and message routing.
--
-----------------------------------------------------------------------------

module Control.Distributed.Process.Execution
  ( -- * Mailbox Buffering
    module Control.Distributed.Process.Execution.Mailbox
    -- * Message Exchanges
  , module Control.Distributed.Process.Execution.Exchange
  ) where

import Control.Distributed.Process.Execution.Exchange hiding (startSupervised)
import Control.Distributed.Process.Execution.Mailbox hiding (startSupervised, post)

{-

Load regulation requires that we apply limits to various parts of the system.
The manner in which they're applied may vary, but the mechanisms are limited
to:

1. rejecting the activity/request
2. accepting the activity immediately
3. blocking some or all requestors
4. blocking some (or all) activities
5. terminiating some (or all) activities

-}