From 5a68acb521bae0277b2c8a8ca023dc57a5ff4b33 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 21 Aug 2012 19:58:53 -0400 Subject: add NetWatcher thread This deals with interruptions in network connectevity, by listening for a new network interface coming up (using dbus to see when network-manager or wicd do it), and forcing a rescan of --- Utility/DBus.hs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Utility/DBus.hs (limited to 'Utility/DBus.hs') diff --git a/Utility/DBus.hs b/Utility/DBus.hs new file mode 100644 index 000000000..cfd06f762 --- /dev/null +++ b/Utility/DBus.hs @@ -0,0 +1,28 @@ +{- DBus utilities + - + - Copyright 2012 Joey Hess + - + - Licensed under the GNU GPL version 3 or higher. + -} + +{-# LANGUAGE OverloadedStrings #-} + +module Utility.DBus where + +import DBus.Client +import DBus +import Data.Maybe + +type ServiceName = String + +listServiceNames :: Client -> IO [ServiceName] +listServiceNames client = do + reply <- callDBus client "ListNames" [] + return $ fromMaybe [] $ fromVariant (methodReturnBody reply !! 0) + +callDBus :: Client -> MemberName -> [Variant] -> IO MethodReturn +callDBus client name params = call_ client $ + (methodCall "/org/freedesktop/DBus" "org.freedesktop.DBus" name) + { methodCallDestination = Just "org.freedesktop.DBus" + , methodCallBody = params + } -- cgit v1.2.3