aboutsummaryrefslogtreecommitdiff
path: root/server/src/Thermoprint/Server/QMConfig.hs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/Thermoprint/Server/QMConfig.hs')
-rw-r--r--server/src/Thermoprint/Server/QMConfig.hs42
1 files changed, 42 insertions, 0 deletions
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 @@
1{-# LANGUAGE GADTs #-}
2{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE ImpredicativeTypes #-}
4{-# LANGUAGE TypeOperators #-}
5
6module Thermoprint.Server.QMConfig
7 ( QMConfig(..)
8 ) where
9
10import Control.Monad.Trans.Resource
11import Control.Monad.Trans.Control
12import Control.Monad.Trans.Identity
13import Control.Monad.Logger
14import Control.Monad.Reader
15import Control.Monad.IO.Class
16import Control.Monad.Morph
17import Control.Category
18import Prelude hiding (id, (.))
19import Servant.Server.Internal.Enter (enter, (:~>)(..))
20
21import Data.Default.Class
22
23import Control.Concurrent.STM
24
25import Thermoprint.Server.Queue
26
27data QMConfig m where
28 QMConfig :: ( MonadTrans t
29 , MFunctor t
30 , Monad (t STM)
31 , MonadIO (t IO)
32 ) => QueueManager t -> (t IO) :~> m -> QMConfig m
33 QMConfig' :: ( MonadIO m
34 ) => ( forall t. ( MonadTrans t
35 , MFunctor t
36 , Monad (t STM)
37 , MonadIO (t IO)
38 ) => QueueManager t
39 ) -> QMConfig m
40
41instance MonadIO m => Default (QMConfig m) where
42 def = QMConfig idQM $ Nat (liftIO . runIdentityT)