Class: DispatchRider::QueueServices::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/dispatch-rider/queue_services/base.rb

Direct Known Subclasses

AwsSqs, FileSystem, Simple

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Base

Returns a new instance of Base.



12
13
14
# File 'lib/dispatch-rider/queue_services/base.rb', line 12

def initialize(options = {})
  @queue = assign_storage(options.symbolize_keys)
end

Instance Attribute Details

#queueObject

Returns the value of attribute queue.



10
11
12
# File 'lib/dispatch-rider/queue_services/base.rb', line 10

def queue
  @queue
end

Instance Method Details

#assign_storage(attrs) ⇒ Object

Raises:

  • (NotImplementedError)


16
17
18
# File 'lib/dispatch-rider/queue_services/base.rb', line 16

def assign_storage(attrs)
  raise NotImplementedError
end

#construct_message_from(item) ⇒ Object

Raises:

  • (NotImplementedError)


53
54
55
# File 'lib/dispatch-rider/queue_services/base.rb', line 53

def construct_message_from(item)
  raise NotImplementedError
end

#delete(item) ⇒ Object

Raises:

  • (NotImplementedError)


57
58
59
# File 'lib/dispatch-rider/queue_services/base.rb', line 57

def delete(item)
  raise NotImplementedError
end

#empty?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/dispatch-rider/queue_services/base.rb', line 61

def empty?
  size.zero?
end

#headObject



40
41
42
43
# File 'lib/dispatch-rider/queue_services/base.rb', line 40

def head
  raw_item = raw_head
  raw_item && received_message_for(raw_item)
end

#insert(item) ⇒ Object

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/dispatch-rider/queue_services/base.rb', line 26

def insert(item)
  raise NotImplementedError
end

#pop(&block) ⇒ Object

If you pass a block into pop it will wrap the deletion of the message with it’s handling



32
33
34
35
36
37
38
# File 'lib/dispatch-rider/queue_services/base.rb', line 32

def pop(&block)
  received = head
  if received
    block.call(received) && delete(received.item)
    received
  end
end

#push(item) ⇒ Object



20
21
22
23
24
# File 'lib/dispatch-rider/queue_services/base.rb', line 20

def push(item)
  message = serialize(item)
  insert(message)
  message
end

#raw_headObject

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/dispatch-rider/queue_services/base.rb', line 49

def raw_head
  raise NotImplementedError
end

#received_message_for(raw_item) ⇒ Object



45
46
47
# File 'lib/dispatch-rider/queue_services/base.rb', line 45

def received_message_for(raw_item)
   QueueServices::ReceivedMessage.new(construct_message_from(raw_item), raw_item)
end

#sizeObject

Raises:

  • (NotImplementedError)


65
66
67
# File 'lib/dispatch-rider/queue_services/base.rb', line 65

def size
  raise NotImplementedError
end