module Periodic.ClientPool
  ( module Periodic.Client
  , ClientPoolEnv
  , runClientPoolM
  , openPool
  ) where

import           Metro.TP.Socket           (Socket, socket)
import           Periodic.Client           hiding (close)
import           Periodic.Trans.ClientPool (runClientPoolT)
import qualified Periodic.Trans.ClientPool as P (ClientPoolEnv, openPool)

type ClientPoolEnv = P.ClientPoolEnv Socket

runClientPoolM :: ClientPoolEnv -> ClientM a -> IO a
runClientPoolM :: ClientPoolEnv -> ClientM a -> IO a
runClientPoolM = ClientPoolEnv -> ClientM a -> IO a
forall tp a. ClientPoolEnv tp -> ClientT tp IO a -> IO a
runClientPoolT

openPool :: String -> Int -> IO ClientPoolEnv
openPool :: String -> Int -> IO ClientPoolEnv
openPool h :: String
h = TransportConfig Socket -> Int -> IO ClientPoolEnv
forall tp.
Transport tp =>
TransportConfig tp -> Int -> IO (ClientPoolEnv tp)
P.openPool (String -> TransportConfig Socket
socket String
h)