Sha256: 562dbfb573be65b095d99fe5fe386b40b595c0fa81d1849561005549ea0e6d90
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
module Prometheus module Client module Helper class FileLocker class << self LOCK_FILE_MUTEX = Mutex.new def lock_to_process(filepath) LOCK_FILE_MUTEX.synchronize do @file_locks ||= {} return false if @file_locks[filepath] file = File.open(filepath, 'w+') if file.flock(File::LOCK_NB | File::LOCK_EX) @file_locks[filepath] = file return true else return false end end end def unlock(filepath) LOCK_FILE_MUTEX.synchronize do @file_locks ||= {} return false unless @file_locks[filepath] @file_locks.delete(filepath).flock(File::LOCK_UN) end end def unlock_all LOCK_FILE_MUTEX.synchronize do @file_locks ||= {} @file_locks.values.each do |file| file.flock(File::LOCK_UN) end @file_locks = {} end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prometheus-client-mmap-0.7.0.beta19 | lib/prometheus/client/helper/file_locker.rb |