class Prometheus::Client::Helper::FileLocker

Constants

LOCK_FILE_MUTEX

Public Class Methods

lock_to_process(filepath) click to toggle source
# File lib/prometheus/client/helper/file_locker.rb, line 8
def lock_to_process(filepath)
  LOCK_FILE_MUTEX.synchronize do
    @file_locks ||= {}
    return false if @file_locks[filepath]

    file = File.open(filepath, 'ab')
    if file.flock(File::LOCK_NB | File::LOCK_EX)
      @file_locks[filepath] = file
      return true
    else
      return false
    end
  end
end
unlock(filepath) click to toggle source
# File lib/prometheus/client/helper/file_locker.rb, line 23
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
unlock_all() click to toggle source
# File lib/prometheus/client/helper/file_locker.rb, line 32
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