Class: Adrian::Queue

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

Direct Known Subclasses

ArrayQueue, CompositeQueue, DirectoryQueue

Defined Under Namespace

Classes: ItemTooOldError

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Queue

Returns a new instance of Queue.



13
14
15
# File 'lib/adrian/queue.rb', line 13

def initialize(options = {})
  @options = options
end

Instance Method Details

#lengthObject



47
48
49
# File 'lib/adrian/queue.rb', line 47

def length
  raise "#{self.class.name}#length is not defined"
end

#max_ageObject



35
36
37
# File 'lib/adrian/queue.rb', line 35

def max_age
  @max_age ||= @options[:max_age]
end

#popObject



17
18
19
20
21
# File 'lib/adrian/queue.rb', line 17

def pop
  item = pop_item
  item.queue = self if item
  verify_age!(item)
end

#pop_itemObject



39
40
41
# File 'lib/adrian/queue.rb', line 39

def pop_item
  raise "#{self.class.name}#pop_item is not defined"
end

#push(item) ⇒ Object



23
24
25
# File 'lib/adrian/queue.rb', line 23

def push(item)
  push_item(item)
end

#push_item(item) ⇒ Object



43
44
45
# File 'lib/adrian/queue.rb', line 43

def push_item(item)
  raise "#{self.class.name}#push_item is not defined"
end

#verify_age!(item) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/adrian/queue.rb', line 27

def verify_age!(item)
  if item && max_age && item.age > max_age
    raise ItemTooOldError.new(item, self)
  end

  item
end