Sha256: c71782ca7cdbc7093aef92689f4187b2e659f6a754daa58062521be9c38843d8

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

module RubyRabbitmqJanus
  module Rabbit
    module Publisher
      # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
      # This publisher don't post message. Is listen just an standard queue to Janus.
      # By default is "from-janus". It's a parameter in config to this gem.
      class Listener < BasePublisher
        # Define an publisher
        def initialize(rabbit)
          super()
          @response = nil
          @count = 1
          @rabbit = rabbit.channel
          @reply = @rabbit.queue(Tools::Config.instance.options['queues']['queue_from'])
          Tools::Log.instance.debug "Waiting message from queue : #{@reply.name}"
        end

        # Listen a queue and return a body response
        def listen_events
          @reply.subscribe do |_info_delivery, _propertie, payload|
            synchronize_response(payload)
          end
        end

        # Execute an action for each response received in queue
        def event_received
          loop do
            return_response
            yield @response.event, @response.data, @response.jsep
          end
        end

        private

        # Sending an signal when an response is reading in queue
        def synchronize_response(payload)
          @response = Janus::Response.new(JSON.parse(payload))
          Tools::Log.instance.info \
            "[X] Message number reading : #{@count} --\n\r" \
            "#{@response.to_hash}"
          @count += 1
          lock.synchronize { condition.signal }
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ruby_rabbitmq_janus-1.0.5 lib/rrj/rabbit/publish/listener.rb
ruby_rabbitmq_janus-1.0.4 lib/rrj/rabbit/publish/listener.rb