lib/nfagent/payload.rb in nfagent-0.9.31 vs lib/nfagent/payload.rb in nfagent-0.9.50
- old
+ new
@@ -1,8 +1,8 @@
module NFAgent
- class Payload < Struct.new(:data, :checksum, :filename, :line_count, :chunk_expired)
+ class Payload < Struct.new(:data, :checksum, :filename, :line_count, :chunk_expired, :key)
def initialize
yield self
end
def attempt
@@ -21,20 +21,23 @@
def size
(self.data || "").size + 1
end
def to_hash
- {
+ ret = {
"payload" => self.data,
"checksum" => self.checksum,
"line_count" => self.line_count,
"chunk_expired" => self.chunk_expired
}
+ ret["key"] = self.key unless self.key.blank?
+ ret
end
def write_to_disk(directory)
- File.open(File.join(directory, "#{self.checksum}-#{self.attempt}"), "w") do |file|
+ filename = [ self.checksum, self.attempt, self.key ].compact.join("-")
+ File.open(File.join(directory, filename), "w") do |file|
file << self.data
end
end
def lock
@@ -46,18 +49,18 @@
def locked?
filename && File.exists?(lockfile)
end
- def self.read_from_file(filename)
+ def self.read_from_file(filename, dir = Config.dump_dir)
# Ensure the file is only relative
filename = File.basename(filename)
self.new do |payload|
payload.filename = filename
- payload.checksum, payload.attempt = filename.split("-")
+ payload.checksum, payload.attempt, payload.key = filename.split("-")
payload.data = ""
- ref = File.join(Config.dump_dir, filename)
+ ref = File.join(dir, filename)
File.open(ref, "r") do |file|
payload.data << file.read
end
end
end
@@ -66,10 +69,11 @@
FileUtils.rm_f(File.join(Config.dump_dir, self.filename)) if self.filename
end
def try_again_later
# TODO: Move the file to a new name with a later timetamp
- FileUtils.mv(File.join(Config.dump_dir, self.filename), File.join(Config.dump_dir, "#{self.checksum}-#{self.attempt}"))
+ new_filename = [ self.checksum, self.attempt, self.key ].compact.join("-")
+ FileUtils.mv(File.join(Config.dump_dir, self.filename), File.join(Config.dump_dir, new_filename))
end
private
def lockfile
File.join(Config.dump_dir, "#{filename}.lock") if filename