class FileReplicator::Checksum

Constants

SUPPORTED

Public Class Methods

new(alg) click to toggle source
# File lib/file_replicator/checksum.rb, line 8
def initialize(alg)
  @alg          = alg
  @file_digest  = Digest.const_get(alg.upcase).new
  @chunk_digest = Digest.const_get(alg.upcase).new
end

Public Instance Methods

add_chunk(data) click to toggle source
# File lib/file_replicator/checksum.rb, line 14
def add_chunk(data)
  @chunk_digest << data
  @file_digest << data
end
append_chunk_checksum() click to toggle source
# File lib/file_replicator/checksum.rb, line 29
def append_chunk_checksum
  append_to_checksum_file @chunk_digest.hexdigest, @chunk_file_name
end
append_file_checksum() click to toggle source
# File lib/file_replicator/checksum.rb, line 33
def append_file_checksum
  append_to_checksum_file @file_digest.hexdigest, @file_path
end
start_new_chunk(chunk_file_name) click to toggle source
# File lib/file_replicator/checksum.rb, line 24
def start_new_chunk(chunk_file_name)
  @chunk_file_name = File.basename(chunk_file_name)
  @chunk_digest.reset
end
start_new_file(file_path) click to toggle source
# File lib/file_replicator/checksum.rb, line 19
def start_new_file(file_path)
  @file_path = file_path
  @file_digest.reset
end

Protected Instance Methods

append_to_checksum_file(hexdigest, checksummed_file_path) click to toggle source
# File lib/file_replicator/checksum.rb, line 39
def append_to_checksum_file(hexdigest, checksummed_file_path)
  raise 'No checksum file path is defined' if @file_path.nil?

  chk_filename = "#{@file_path}.#{@alg.downcase}"
  File.open chk_filename, 'a' do |f|
    f.write "#{hexdigest}  #{File.basename(checksummed_file_path)}\n"
  end
end