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 12
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 16
def assign_storage(attrs)
  raise NotImplementedError
end
construct_message_from(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 53
def construct_message_from(item)
  raise NotImplementedError
end
delete(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 57
def delete(item)
  raise NotImplementedError
end
empty?() click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 61
def empty?
  size.zero?
end
head() click to toggle source
# 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) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 26
def insert(item)
  raise NotImplementedError
end
pop(&block) 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 32
def pop(&block)
  received = head
  if received
    block.call(received) && delete(received.item)
    received
  end
end
push(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 20
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 49
def raw_head
  raise NotImplementedError
end
received_message_for(raw_item) click to toggle source
# 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
size() click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 65
def size
  raise NotImplementedError
end

Protected Instance Methods

deserialize(item) click to toggle source
# File lib/dispatch-rider/queue_services/base.rb, line 75
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 71
def serialize(item)
  item.to_json
end