Class: Madeleine::CommandLog

Inherits:
Object
  • Object
show all
Defined in:
lib/madeleine.rb

Overview

:nodoc:

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, file_service) ⇒ CommandLog

Returns a new instance of CommandLog.



272
273
274
275
276
# File 'lib/madeleine.rb', line 272

def initialize(path, file_service)
  id = self.class.highest_log(path, file_service) + 1
  numbered_file = NumberedFile.new(path, "command_log", id)
  @file = file_service.open(numbered_file.name, 'wb')
end

Class Method Details

.highest_log(directory_name, file_service) ⇒ Object



288
289
290
291
292
293
294
295
296
297
298
# File 'lib/madeleine.rb', line 288

def self.highest_log(directory_name, file_service)
  highest = 0
  log_file_names(directory_name, file_service).each {|file_name|
    match = /^(\d{#{FILE_COUNTER_SIZE}})/.match(file_name)
    n = match[1].to_i
    if n > highest
      highest = n
    end
  }
  highest
end

.log_file_names(directory_name, file_service) ⇒ Object



262
263
264
265
266
267
268
269
270
# File 'lib/madeleine.rb', line 262

def self.log_file_names(directory_name, file_service)
  return [] unless file_service.exist?(directory_name)
  result = file_service.dir_entries(directory_name).select {|name|
    name =~ /^\d{#{FILE_COUNTER_SIZE}}\.command_log$/
  }
  result.each {|name| name.untaint }
  result.sort!
  result
end

Instance Method Details

#closeObject



278
279
280
# File 'lib/madeleine.rb', line 278

def close
  @file.close
end

#store(command) ⇒ Object



282
283
284
285
286
# File 'lib/madeleine.rb', line 282

def store(command)
  Marshal.dump(command, @file)
  @file.flush
  @file.fsync
end