Sha256: f341ec47d756eda35df896e8749d93a3c1d3692edbed7c41f1ae1f2af15d7f54

Contents?: true

Size: 858 Bytes

Versions: 1

Compression:

Stored size: 858 Bytes

Contents

require 'broker/payload'
require 'broker/utility'

module Broker
  class Queue
    include Broker::Utility
    
    attr_reader :processed, :pending, :failed
    
    def initialize
      @processed = 0
      @pending = []
      @failed = []
    end
    
    def push(paths)
      paths.each { |p| @pending << Broker::Payload.parse(p) }
    end
    
    def next
      @pending.pop
    end
    
    def empty?
      @pending.empty?
    end
    
    def failure(payload)
      @failed << payload
      move(payload, Broker.options[:failed_path])
    end
    
    def success(payload)
      @processed +=1
      move(payload, Broker.options[:processed_path])
    end
    
    private
    
    def move(payload, dest)
      f = "#{timestamp}_#{File.basename(payload.pkg.file)}"
      FileUtils.mv payload.pkg.file, File.join(dest, "/", f)
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
broker-0.1.2 lib/broker/queue.rb