second-transfer-0.2.0.0: hs-src/SecondTransfer/Http2/MakeAttendant.hs
{-# OPTIONS_HADDOCK hide #-}
module SecondTransfer.Http2.MakeAttendant (
http2Attendant
) where
import SecondTransfer.Http2.Framer (wrapSession)
import SecondTransfer.Http2.Session (SessionsContext)
import SecondTransfer.MainLoop.CoherentWorker
import SecondTransfer.MainLoop.PushPullType (
--CloseAction,
--PullAction,
--PushAction,
Attendant
)
-- | The type of this function is equivalent to:
--
-- @
-- http2Attendant :: CoherentWorker -> PushAction -> PullAction -> CloseAction -> IO ()
-- @
--
-- Given a `CoherentWorker`, this function wraps it with flow control, multiplexing,
-- and state maintenance needed to run an HTTP/2 session.
http2Attendant :: SessionsContext -> CoherentWorker -> Attendant
http2Attendant sessions_context coherent_worker push_action pull_action close_action = do
let
attendant = wrapSession coherent_worker sessions_context
attendant push_action pull_action close_action