30 lines
950 B
Haskell
30 lines
950 B
Haskell
-- |
|
|
-- Module : Network.TLS.Session
|
|
-- License : BSD-style
|
|
-- Maintainer : Vincent Hanquez <vincent@snarc.org>
|
|
-- Stability : experimental
|
|
-- Portability : unknown
|
|
--
|
|
{-# LANGUAGE ExistentialQuantification #-}
|
|
module Network.TLS.Session
|
|
( SessionManager(..)
|
|
, NoSessionManager(..)
|
|
) where
|
|
|
|
import Network.TLS.Types
|
|
|
|
-- | A session manager
|
|
class SessionManager a where
|
|
-- | used on server side to decide whether to resume a client session
|
|
sessionResume :: a -> SessionID -> IO (Maybe SessionData)
|
|
-- | used when a session is established.
|
|
sessionEstablish :: a -> SessionID -> SessionData -> IO ()
|
|
-- | used when a session is invalidated
|
|
sessionInvalidate :: a -> SessionID -> IO ()
|
|
|
|
data NoSessionManager = NoSessionManager
|
|
|
|
instance SessionManager NoSessionManager where
|
|
sessionResume _ _ = return Nothing
|
|
sessionEstablish _ _ _ = return ()
|
|
sessionInvalidate _ _ = return ()
|