module Periodic.Client
  ( ClientM
  , ClientEnv
  , open
  , close
  , runClientM

  -- re-exports
  , ping
  , submitJob_
  , submitJob
  , runJob_
  , runJob
  , removeJob
  , dropFunc
  , status
  , configGet
  , configSet
  , load
  , dump
  , shutdown
  ) where

import           Metro.TP.Socket       (Socket, socket)
import           Periodic.Trans.Client hiding (ClientEnv, open)
import qualified Periodic.Trans.Client as C (ClientEnv, open)

type ClientM = ClientT Socket IO

type ClientEnv = C.ClientEnv Socket

open :: String -> IO ClientEnv
open :: String -> IO ClientEnv
open = TransportConfig Socket -> IO ClientEnv
forall (m :: * -> *) tp.
(MonadUnliftIO m, Transport tp) =>
TransportConfig tp -> m (ClientEnv tp)
C.open (TransportConfig Socket -> IO ClientEnv)
-> (String -> TransportConfig Socket) -> String -> IO ClientEnv
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> TransportConfig Socket
socket

runClientM :: ClientEnv -> ClientM a -> IO a
runClientM :: ClientEnv -> ClientM a -> IO a
runClientM = ClientEnv -> ClientM a -> IO a
forall (m :: * -> *) tp a.
Monad m =>
ClientEnv tp -> ClientT tp m a -> m a
runClientT