Sha256: 7722c7a1c7c97d53fede3c20b86d2e3c9e57e4d8ef351721082e81376d937e43

Contents?: true

Size: 872 Bytes

Versions: 1

Compression:

Stored size: 872 Bytes

Contents

require 'mqtt'

module MQTTRpc
  class Client
    def initialize(options = {}, timeout = 10)
      @options = options
      @timeout = timeout
    end

    def connect
      MQTT::Client.connect(@options)
    end

    def ready
      @subscribe_connect = connect
      @publish_connect = connect
    end

    def publish(publish_topic, message, subscribe_topic)
      ready

      @subscribe_connect.subscribe(subscribe_topic)
      @publish_connect.publish(publish_topic, message)
      begin
        Timeout.timeout(@timeout) do
          @subscribe_connect.get do |_topic, payload|
            @payload = payload
            break
          end
        end
      rescue
        raise TimeoutException
      ensure
        destroy
      end

      @payload
    end

    def destroy
      @subscribe_connect.disconnect
      @publish_connect.disconnect
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mqtt_rpc-0.2.0 lib/mqtt_rpc/client.rb