class DispatchRider::QueueServices::Base

Attributes

queue[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 14
def initialize(options = {})
  @queue = assign_storage(options.symbolize_keys)
end

Public Instance Methods

assign_storage(attrs) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 18
def assign_storage(attrs)
  raise NotImplementedError
end
construct_message_from(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 54
def construct_message_from(item)
  raise NotImplementedError
end
delete(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 58
def delete(item)
  raise NotImplementedError
end
empty?() click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 62
def empty?
  size.zero?
end
head() click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 41
def head
  raw_item = raw_head
  raw_item && received_message_for(raw_item)
end
insert(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 28
def insert(item)
  raise NotImplementedError
end
pop() { |received| ... } click to toggle source

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

# File lib/dispatch-rider/queue_services/base.rb, line 33
def pop
  received = head
  if received
    yield(received) && delete(received.item)
    received
  end
end
push(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 22
def push(item)
  message = serialize(item)
  insert(message)
  message
end
raw_head() click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 50
def raw_head
  raise NotImplementedError
end
received_message_for(raw_item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 46
def received_message_for(raw_item)
   QueueServices::ReceivedMessage.new(construct_message_from(raw_item), raw_item)
end
size() click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 66
def size
  raise NotImplementedError
end

Protected Instance Methods

deserialize(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 76
def deserialize(item)
  attrs = JSON.parse(item).symbolize_keys
  DispatchRider::Message.new(attrs)
end
serialize(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 72
def serialize(item)
  item.to_json
end