-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Expose a dbus server to control hslogger
--   
--   Please see the README on Github at
--   <a>https://github.com/IvanMalison/dbus-hslogger#readme</a>
@package dbus-hslogger
@version 0.1.1.0

module System.Log.DBus.Server
maybeToEither :: b -> Maybe a -> Either b a

-- | An opaque handle for the log server, which tracks loggers whose levels
--   have been explicitly set.
newtype LogServer
LogServer :: IORef (Map String Priority) -> LogServer

-- | Create a new <a>LogServer</a>.
newLogServer :: IO LogServer
setLogLevelTracked :: LogServer -> String -> Priority -> IO ()
setLogLevelFromPriorityStringTracked :: LogServer -> String -> String -> IO (Either Reply ())

-- | Get the log level of a specific logger. Returns the level as a string,
--   or an empty string if no level has been explicitly set on that logger.
getLogLevel :: String -> IO String

-- | Get all loggers whose levels have been explicitly set via
--   <tt>SetLogLevel</tt>, as a map from logger name to level string.
getConfiguredLogLevels :: LogServer -> IO (Map String String)

-- | Build the D-Bus interface with tracking and introspection methods.
logInterfaceWithServer :: LogServer -> Interface

-- | The original interface with only <tt>SetLogLevel</tt>. Kept for
--   backward compatibility.
logInterface :: Interface
logPath :: ObjectPath

-- | Start the log server with tracking and introspection. Returns a
--   <a>LogServer</a> handle that can be used to register additional
--   loggers.
startLogServerWithTracking :: Client -> IO LogServer

-- | Start the log server (original API, no tracking).
startLogServer :: Client -> IO ()

-- | Introspection interface including all methods (SetLogLevel,
--   GetLogLevel, GetConfiguredLogLevels). Suitable for TH client
--   generation.
logIntrospectionInterface :: Interface
setLogLevelFromPriorityString :: String -> String -> IO (Either Reply ())
setLogLevel :: String -> Priority -> IO ()

module System.Log.DBus.Client
setLogLevelMethodCall :: MethodCall
setLogLevel :: Client -> BusName -> String -> String -> IO (Either MethodError ())
getLogLevelMethodCall :: MethodCall
getLogLevel :: Client -> BusName -> String -> IO (Either MethodError String)
getConfiguredLogLevelsMethodCall :: MethodCall
getConfiguredLogLevels :: Client -> BusName -> IO (Either MethodError (Map String String))
