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

-- | Simple multicast library
--   
--   The Network.Multicast module is for sending UDP datagrams over
--   multicast (class D) addresses.
@package network-multicast
@version 0.3.2

-- | The Network.Multicast module is for sending UDP datagrams over
--   multicast (class D) addresses.
module Network.Multicast

-- | Calling multicastSender creates a client side UDP socket for
--   sending multicast datagrams to the specified host and port.
--   
--   Minimal example:
--   
--   
--   import Network.Socket
--   import Network.Multicast
--   main = withSocketsDo $ do
--       (sock, addr) <- multicastSender "224.0.0.99" 9999
--       let loop = do
--           sendTo sock "Hello, world" addr
--           loop in loop
--   
multicastSender :: HostName -> PortNumber -> IO (Socket, SockAddr)

-- | Calling multicastReceiver creates and binds a UDP socket for
--   listening multicast datagrams on the specified host and port.
--   
--   Minimal example:
--   
--   
--   import Network.Socket
--   import Network.Multicast
--   main = withSocketsDo $ do
--       sock <- multicastReceiver "224.0.0.99" 9999
--       let loop = do
--           (msg, _, addr) <- recvFrom sock 1024
--           print (msg, addr) in loop
--   
multicastReceiver :: HostName -> PortNumber -> IO Socket

-- | Make the socket listen on multicast datagrams sent by the specified
--   HostName.
addMembership :: Socket -> HostName -> Maybe HostName -> IO ()

-- | Stop the socket from listening on multicast datagrams sent by the
--   specified HostName.
dropMembership :: Socket -> HostName -> Maybe HostName -> IO ()

-- | Enable or disable the loopback mode on a socket created by
--   multicastSender. Loopback is enabled by default; disabling it
--   may improve performance a little bit.
setLoopbackMode :: Socket -> LoopbackMode -> IO ()

-- | Set the Time-to-Live of the multicast.
setTimeToLive :: Socket -> TimeToLive -> IO ()

-- | Set the outgoing interface address of the multicast.
setInterface :: Socket -> HostName -> IO ()
type TimeToLive = Int
type LoopbackMode = Bool
enableLoopback :: LoopbackMode
noLoopback :: LoopbackMode
instance Network.Multicast.IOCompat (Network.Socket.Types.Socket -> GHC.Types.IO GHC.Internal.Foreign.C.Types.CInt)
instance Network.Multicast.IOCompat (Network.Socket.Types.Socket -> GHC.Internal.Foreign.C.Types.CInt)
