From f64e26726ce5468069093aa86fe973ad4be4816c Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 26 Feb 2016 22:57:30 +0000 Subject: Split QMConfig into own module --- server/src/Thermoprint/Server/QMConfig.hs | 42 +++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 server/src/Thermoprint/Server/QMConfig.hs (limited to 'server/src/Thermoprint/Server') diff --git a/server/src/Thermoprint/Server/QMConfig.hs b/server/src/Thermoprint/Server/QMConfig.hs new file mode 100644 index 0000000..0cf7beb --- /dev/null +++ b/server/src/Thermoprint/Server/QMConfig.hs @@ -0,0 +1,42 @@ +{-# LANGUAGE GADTs #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE ImpredicativeTypes #-} +{-# LANGUAGE TypeOperators #-} + +module Thermoprint.Server.QMConfig + ( QMConfig(..) + ) where + +import Control.Monad.Trans.Resource +import Control.Monad.Trans.Control +import Control.Monad.Trans.Identity +import Control.Monad.Logger +import Control.Monad.Reader +import Control.Monad.IO.Class +import Control.Monad.Morph +import Control.Category +import Prelude hiding (id, (.)) +import Servant.Server.Internal.Enter (enter, (:~>)(..)) + +import Data.Default.Class + +import Control.Concurrent.STM + +import Thermoprint.Server.Queue + +data QMConfig m where + QMConfig :: ( MonadTrans t + , MFunctor t + , Monad (t STM) + , MonadIO (t IO) + ) => QueueManager t -> (t IO) :~> m -> QMConfig m + QMConfig' :: ( MonadIO m + ) => ( forall t. ( MonadTrans t + , MFunctor t + , Monad (t STM) + , MonadIO (t IO) + ) => QueueManager t + ) -> QMConfig m + +instance MonadIO m => Default (QMConfig m) where + def = QMConfig idQM $ Nat (liftIO . runIdentityT) -- cgit v1.2.3