Sha256: 79f682b57194ff2277a7aefd510aa09adb68932695e4fe54e11eafd00d47021c
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 KB
Contents
# frozen_string_literal: true module DjiMqttConnect module Thing::Product class RequestsTopicRepository < TopicRepository REQUESTS_TOPIC_REGEX = /\Athing\/product\/(?<gateway_sn>.+)\/requests\z/ def listen! listen_to_topic("thing/product/+/requests") do |topic, raw_message| logger.debug(raw_message) matched_topic = REQUESTS_TOPIC_REGEX.match(topic) raise Error, "Unknown topic: #{topic}" unless matched_topic gateway_sn = matched_topic[:gateway_sn] message = requests_marshal.load(raw_message) logger.info("Received #{message} from #{gateway_sn}") if message.instance_of?(RequestsMessage) # Broadcast an unsupported message event broadcast(:unsupported_message, topic, raw_message) else # Build event name and broadcast (i.e. ::ConfigRequestsMessage => config) broadcast(message._method.to_sym, gateway_sn, message) end # Broadcast a generic received requests message event broadcast(:received_requests_message, gateway_sn, message) rescue ParseError => error broadcast(:parse_error, error, topic, raw_message) end end private def requests_marshal @requests_marshal ||= RequestsMarshal.new end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dji_mqtt_connect-0.1.23.1 | lib/dji_mqtt_connect/topics/thing/product/requests.rb |
dji_mqtt_connect-0.1.23 | lib/dji_mqtt_connect/topics/thing/product/requests.rb |