module Network.Avahi.Announce where
import Data.Int
import Data.Word
import Data.Char
import Data.Maybe
import qualified DBus.Client as C
import DBus.Client.Simple
import Network.Avahi.Common
announce :: Service
-> IO ()
announce (Service {..}) = do
bus <- connectSystem
server <- proxy bus avahiBus "/"
[newGroup] <- call server serverInterface "EntryGroupNew" []
new <- proxy bus avahiBus (fromJust $ fromVariant newGroup)
let text' = [map (fromIntegral . ord) serviceText] :: [[Word8]]
call new entryGroupInterface "AddService" [toVariant (1 :: Int32),
proto2variant serviceProtocol,
flags_empty,
toVariant serviceName,
toVariant serviceType,
toVariant serviceDomain,
toVariant serviceHost,
toVariant servicePort,
toVariant text']
call new entryGroupInterface "Commit" []
return ()