-- | Timeout, implemented independently of socket timeout setting. module Sound.Osc.Time.Timeout where import System.Timeout {- base -} import Sound.Osc.Packet {- hsoc -} import Sound.Osc.Transport.Fd {- hosc -} -- | Variant of 'timeout' where time is given in fractional seconds. timeout_r :: Double -> IO a -> IO (Maybe a) timeout_r = timeout . floor . (* 1000000) -- | Variant of 'recvPacket' that implements an /n/ second 'timeout'. recvPacketTimeout :: Transport t => Double -> t -> IO (Maybe (PacketOf Message)) recvPacketTimeout n fd = timeout_r n (recvPacket fd)