{- Copyright (c) 2010-2011, Alexander Bogdanov License: MIT -} -- | Same as "Database.Redis.Utils.Lock" but with monadic wrapped module Database.Redis.Utils.Monad.Lock (acquire, acquire', acquireOnce, release) where import Control.Monad.Trans import qualified Database.Redis.Utils.Lock as L import Database.Redis.Monad (WithRedis(..)) import Database.Redis.ByteStringClass acquire :: (WithRedis m, BS s) => s -> Int -> Int -> m Bool acquire name timeout retry_timeout = do r <- getRedis liftIO $ L.acquire r name timeout retry_timeout acquire' name timeout = acquire name timeout 1 acquireOnce name = getRedis >>= liftIO . flip L.acquireOnce name release :: (WithRedis m, BS s) => s -> m () release name = getRedis >>= liftIO . flip L.release name