Sha256: 9f3adfd8c7b82598e1785fac3ce97e6f96d514c14681722ffe03fff7e0ab5029

Contents?: true

Size: 887 Bytes

Versions: 56

Compression:

Stored size: 887 Bytes

Contents

# frozen_string_literal: true

require "wisper"

module DjiMqttConnect
  class TopicRepository
    include Wisper::Publisher

    def initialize(client)
      @client = client
    end

    private

    attr_reader :client

    def logger
      @logger ||= DjiMqttConnect.logger.tagged(self.class.name.sub(/Repository\z/, ""))
    end

    def listen_to_topic(topic, &block)
      logger.info("Listening to #{topic}...")

      client.mqtt_client.get(topic, &block)
    rescue Interrupt
      # Allow safe exiting after interrupts
      logger.info("Disconnected")
    end

    def publish_to_topic(topic, message, marshal:)
      logger.info("Publishing #{message.class} to #{topic}")

      message_data = marshal.dump(message)
      logger.debug(message_data)

      client.mqtt_client.publish(topic, message_data)

      broadcast(:publish_to_topic, topic, message)
    end
  end
end

Version data entries

56 entries across 56 versions & 1 rubygems

Version Path
dji_mqtt_connect-0.1.27.1 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.27 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.26 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.25.5 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.25.4 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.25.3 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.25.2 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.25.1 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.25 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.24.1 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.24 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.23.3 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.23.2 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.23.1 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.23 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.22.2 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.22.1 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.22 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.21 lib/dji_mqtt_connect/topic_repository.rb
dji_mqtt_connect-0.1.20.1 lib/dji_mqtt_connect/topic_repository.rb