    -- |
    -- Module      : Network.TLS.Session
    -- License     : BSD-style
    -- Maintainer  : Vincent Hanquez <vincent@snarc.org>
    -- Stability   : experimental
    -- Portability : unknown
    --
    module Network.TLS.Session
        ( SessionManager(..)
        , noSessionManager
        ) where

    import Network.TLS.Types

    -- | A session manager
    data SessionManager = SessionManager
        { -- | used on server side to decide whether to resume a client session.
          sessionResume     :: SessionID -> IO (Maybe SessionData)
          -- | used when a session is established.
        , sessionEstablish  :: SessionID -> SessionData -> IO ()
          -- | used when a session is invalidated.
        , sessionInvalidate :: SessionID -> IO ()
        }

    noSessionManager :: SessionManager
    noSessionManager = SessionManager
        { sessionResume     = \_   -> return Nothing
        , sessionEstablish  = \_ _ -> return ()
        , sessionInvalidate = \_   -> return ()
        }