class Prometheus::Client::Helper::MmapedFile

Attributes

filepath[R]
size[R]

Public Class Methods

ensure_exclusive_file(file_prefix = 'mmaped_file') click to toggle source
# File lib/prometheus/client/helper/mmaped_file.rb, line 41
def ensure_exclusive_file(file_prefix = 'mmaped_file')
  (0..Float::INFINITY).lazy
    .map { |f_num| "#{file_prefix}_#{Prometheus::Client.pid}-#{f_num}.db" }
    .map { |filename| File.join(Prometheus::Client.configuration.multiprocess_files_dir, filename) }
    .find { |path| Helper::FileLocker.lock_to_process(path) }
end
new(filepath) click to toggle source
Calls superclass method
# File lib/prometheus/client/helper/mmaped_file.rb, line 13
def initialize(filepath)
  @filepath = filepath

  File.open(filepath, 'a+b') do |file|
    file.truncate(initial_mmap_file_size) if file.size < MINIMUM_SIZE
    @size = file.size
  end

  super(filepath)
end
open(filepath) click to toggle source
# File lib/prometheus/client/helper/mmaped_file.rb, line 37
def open(filepath)
  MmapedFile.new(filepath)
end
open_exclusive_file(file_prefix = 'mmaped_file') click to toggle source
# File lib/prometheus/client/helper/mmaped_file.rb, line 48
def open_exclusive_file(file_prefix = 'mmaped_file')
  filename = Helper::MmapedFile.ensure_exclusive_file(file_prefix)
  open(filename)
end

Public Instance Methods

close() click to toggle source
# File lib/prometheus/client/helper/mmaped_file.rb, line 24
def close
  munmap
end

Private Instance Methods

initial_mmap_file_size() click to toggle source
# File lib/prometheus/client/helper/mmaped_file.rb, line 30
def initial_mmap_file_size
  Prometheus::Client.configuration.initial_mmap_file_size
end