{-# 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 _ = () -> m () forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return () clean :: IO () clean = () -> IO () forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return () (QLogger, IO ()) -> IO (QLogger, IO ()) forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return (QLogger 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 </> (CID -> FilePath forall a. Show a => a -> FilePath show CID cid FilePath -> FilePath -> FilePath forall a. Semigroup a => a -> a -> a <> FilePath ".qlog") (LogStr -> IO () fastlogger, IO () clean) <- LogType' LogStr -> IO (LogStr -> IO (), IO ()) forall v. LogType' v -> IO (v -> IO (), IO ()) newFastLogger1 (LogType' LogStr -> IO (LogStr -> IO (), IO ())) -> LogType' LogStr -> IO (LogStr -> IO (), IO ()) 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 (QLogger, IO ()) -> IO (QLogger, IO ()) forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return (QLogger qlogger, IO () clean)