class Zold::JournaledPipeline

The entrance that keeps a journal for each wallet

Public Class Methods

new(pipeline, dir) click to toggle source
# File lib/zold/node/journaled_pipeline.rb, line 60
def initialize(pipeline, dir)
  @pipeline = pipeline
  @dir = dir
end

Public Instance Methods

push(id, body, wallets, log, lifetime: 6) click to toggle source

Returns a list of modifed wallets (as Zold::Id)

# File lib/zold/node/journaled_pipeline.rb, line 78
def push(id, body, wallets, log, lifetime: 6)
  DirItems.new(@dir).fetch.each do |f|
    f = File.join(@dir, f)
    File.delete(f) if File.mtime(f) < Time.now - lifetime * 60 * 60
  end
  journal = File.join(@dir, "#{Time.now.utc.iso8601.gsub(/[^0-9]/, '-')}-#{id}")
  jlog = Logger.new(journal)
  jlog.level = Logger::DEBUG
  jlog.formatter = Log::COMPACT
  jlog.info("push(#{id}, #{body.length} bytes): starting...")
  jlog.info("Time: #{Time.now.utc.iso8601}")
  jlog.info("Zold gem version: #{Zold::VERSION}")
  modified = @pipeline.push(id, body, JournaledPipeline::Wallets.new(wallets, jlog), Log::Tee.new(log, jlog))
  jlog.info("push(#{id}): done")
  FileUtils.mv(journal, journal + '-done')
  modified
end
start() { |self| ... } click to toggle source
# File lib/zold/node/journaled_pipeline.rb, line 65
def start
  raise 'Block must be given to start()' unless block_given?
  FileUtils.mkdir_p(@dir)
  yield(self)
end
to_json() click to toggle source
# File lib/zold/node/journaled_pipeline.rb, line 71
def to_json
  @pipeline.to_json.merge(
    'dir': @dir
  )
end