class Spacebunny::Device::Message

Attributes

channel_name[R]
delivery_info[R]
device[R]
metadata[R]
payload[R]
sender_id[R]

Public Class Methods

new(device, options, delivery_info, metadata, payload) click to toggle source
# File lib/spacebunny/device/message.rb, line 6
def initialize(device, options, delivery_info, metadata, payload)
  @device = device
  @options = options
  @delivery_info = delivery_info
  @metadata = metadata
  @payload = payload

  extract_options
  set_sender_id_and_channel
end

Public Instance Methods

ack(options = {}) click to toggle source
# File lib/spacebunny/device/message.rb, line 17
def ack(options = {})
  multiple = options.fetch :multiple, false
  @device.input_channel.acknowledge @delivery_info.delivery_tag, multiple
end
blacklisted?() click to toggle source
# File lib/spacebunny/device/message.rb, line 28
def blacklisted?
  # Discard packet if it has been sent from me
  if @discard_mine && @device.id.eql?(@sender_id) && !from_api?
    return true
  end
  # Discard packet if has been published from APIs
  if @discard_from_api && from_api?
    return true
  end
  false
end
from_api?() click to toggle source
# File lib/spacebunny/device/message.rb, line 40
def from_api?
  !@metadata[:headers].nil? && @metadata[:headers]['x-from-sb-api']
end
nack(options = {}) click to toggle source
# File lib/spacebunny/device/message.rb, line 22
def nack(options = {})
  multiple = options.fetch :multiple, false
  requeue = options.fetch :requeue, false
  @device.input_channel.nack @delivery_info.delivery_tag, multiple, requeue
end

Private Instance Methods

extract_options() click to toggle source
# File lib/spacebunny/device/message.rb, line 46
def extract_options
  @discard_mine = @options.fetch :discard_mine, false
  @discard_from_api = @options.fetch :discard_from_api, false
end
set_sender_id_and_channel() click to toggle source
# File lib/spacebunny/device/message.rb, line 51
def set_sender_id_and_channel
  @sender_id, @channel_name = @delivery_info[:routing_key].split('.')
end