Sha256: 966bd8bb34ac0311889eeca3e535fcf6f1291d7e203b35a8b515a7775eebdd4a
Contents?: true
Size: 1.48 KB
Versions: 6
Compression:
Stored size: 1.48 KB
Contents
# frozen_string_literal: true module DjiMqttConnect module Thing::Product class ServicesReplyTopicRepository < TopicRepository SERVICES_REPLY_TOPIC_REGEX = /\Athing\/product\/(?<gateway_sn>.+)\/services_reply\z/ def listen! listen_to_topic("thing/product/+/services_reply") do |topic, raw_message| logger.debug(raw_message) matched_topic = SERVICES_REPLY_TOPIC_REGEX.match(topic) raise Error, "Unknown topic: #{topic}" unless matched_topic gateway_sn = matched_topic[:gateway_sn] message = services_reply_marshal.load(raw_message) logger.info("Received #{message} from #{gateway_sn}") # Broadcast a generic received services reply message event broadcast(:received_services_reply_message, gateway_sn, message) if message.instance_of?(ServicesReplyMessage) # Broadcast an unsupported message event broadcast(:unsupported_message, topic, raw_message) else # Build event name and broadcast (i.e. ::FlighttaskPrepareServicesReplyMessage => flighttask_prepare_reply) event_name = "#{message._method.to_sym}_reply" broadcast(event_name, gateway_sn, message) end rescue ParseError => error broadcast(:parse_error, error, topic, raw_message) end end private def services_reply_marshal @services_reply_marshal ||= ServicesReplyMarshal.new end end end end
Version data entries
6 entries across 6 versions & 1 rubygems