legion-0.1.0.0: src/Network/Legion/UUID.hs
{- |
Contains common UUID functionality.
-}
module Network.Legion.UUID (
getUUID,
) where
import Control.Concurrent (threadDelay)
import Control.Monad.IO.Class (MonadIO, liftIO)
import Data.UUID (UUID)
import Data.UUID.V1 (nextUUID)
{- | A utility function that makes a UUID, no matter what. -}
getUUID :: (MonadIO io) => io UUID
getUUID = liftIO nextUUID >>= maybe (wait >> getUUID) return
where
wait = liftIO (threadDelay oneMillisecond)
oneMillisecond = 1000