postmaster-0.1: Postmaster/FSM/DataHandler.hs
{-# LANGUAGE DeriveDataTypeable #-}
{- |
Module : Postmaster.FSM.DataHandler
Copyright : (c) 2004-2008 by Peter Simons
License : GPL2
Maintainer : simons@cryp.to
Stability : provisional
Portability : Haskell 2-pre
-}
module Postmaster.FSM.DataHandler where
import Data.Typeable
import Postmaster.Base
newtype DH = DH DataHandler
deriving (Typeable)
dataHandler :: SmtpdVariable
dataHandler = defineLocal "datahandler"
setDataHandler :: DataHandler -> Smtpd ()
setDataHandler f = dataHandler (`setVar` DH f)
getDataHandler :: Smtpd DataHandler
getDataHandler = dataHandler getVar_ >>= \(DH f) -> return f
feed :: DataHandler
feed buf = getDataHandler >>= ($ buf)