{-# LANGUAGE OverloadedStrings #-} module Network.QUIC.QLogger ( QLogger , dirQLogger ) where import System.FilePath import System.Log.FastLogger import Network.QUIC.Imports import Network.QUIC.Qlog import Network.QUIC.Types dirQLogger :: Maybe FilePath -> TimeMicrosecond -> CID -> ByteString -> IO (QLogger, IO ()) dirQLogger :: Maybe FilePath -> TimeMicrosecond -> CID -> ByteString -> IO (QLogger, IO ()) dirQLogger Maybe FilePath Nothing TimeMicrosecond _ CID _ ByteString _ = do let qLog :: p -> m () qLog ~p _ = forall (m :: * -> *) a. Monad m => a -> m a return () clean :: IO () clean = forall (m :: * -> *) a. Monad m => a -> m a return () forall (m :: * -> *) a. Monad m => a -> m a return (forall {m :: * -> *} {p}. Monad m => p -> m () qLog, IO () clean) dirQLogger (Just FilePath dir) TimeMicrosecond tim CID cid ByteString rl = do let file :: FilePath file = FilePath dir FilePath -> FilePath -> FilePath </> (forall a. Show a => a -> FilePath show CID cid forall a. Semigroup a => a -> a -> a <> FilePath ".qlog") (LogStr -> IO () fastlogger, IO () clean) <- forall v. LogType' v -> IO (v -> IO (), IO ()) newFastLogger1 forall a b. (a -> b) -> a -> b $ FilePath -> BufSize -> LogType' LogStr LogFileNoRotate FilePath file BufSize 4096 QLogger qlogger <- TimeMicrosecond -> ByteString -> CID -> (LogStr -> IO ()) -> IO QLogger newQlogger TimeMicrosecond tim ByteString rl CID cid LogStr -> IO () fastlogger forall (m :: * -> *) a. Monad m => a -> m a return (QLogger qlogger, IO () clean)