module Periodic.Trans.ClientPool ( module Periodic.Trans.Client , ClientPoolEnv , runClientPoolT , openPool ) where import Data.Pool (Pool, createPool, withResource) import Metro.Class (Transport, TransportConfig) import Periodic.Trans.Client hiding (close) import qualified Periodic.Trans.Client as C (close) type ClientPoolEnv tp = Pool (ClientEnv tp) runClientPoolT :: ClientPoolEnv tp -> ClientT tp IO a -> IO a runClientPoolT pool m = withResource pool $ flip runClientT m openPool :: Transport tp => TransportConfig tp -> Int -> IO (ClientPoolEnv tp) openPool config = createPool (open config) (`runClientT` C.close) 1 5000