class MiniMqtt::PublishPacket

Attributes

dup[RW]
message[RW]
packet_id[RW]
qos[RW]
retain[RW]
topic[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/mini_mqtt/publish_packet.rb, line 23
def initialize params = {}
  @topic = params[:topic] || ""
  @message = params[:message] || ""
  @qos = params[:qos] || 0
  @dup = params[:dup] || false
  @retain = params[:retain] || false
  @packet_id = params[:packet_id]
end

Public Instance Methods

build_payload() click to toggle source
# File lib/mini_mqtt/publish_packet.rb, line 49
def build_payload
  @message
end
build_variable_header() click to toggle source
# File lib/mini_mqtt/publish_packet.rb, line 40
def build_variable_header
  header = mqtt_utf8_encode @topic
  if @qos > 0
    @packet_id ||= new_packet_id
    header << ushort(@packet_id)
  end
  header
end
flags() click to toggle source
# File lib/mini_mqtt/publish_packet.rb, line 32
def flags
  flags = 0
  flags |= 0b0001 if @retain
  flags |= qos << 1
  flags |= 0b1000 if @dup
  flags
end
handle_flags(flags) click to toggle source
# File lib/mini_mqtt/publish_packet.rb, line 6
def handle_flags flags
  @dup = flags & 0b1000 != 0
  @qos = (flags & 0b0110) >> 1
  @retain = flags & 0b0001 != 0
end
read_payload() click to toggle source
# File lib/mini_mqtt/publish_packet.rb, line 19
def read_payload
  @message = @stream.read
end
read_variable_header() click to toggle source
# File lib/mini_mqtt/publish_packet.rb, line 12
def read_variable_header
  @topic = read_mqtt_encoded_string @stream
  if @qos > 0
    @packet_id = read_ushort @stream
  end
end