Sha256: 832979ed16cbb6ee7b203b4bc6e95698c209d4ef931506afcd28c19d24c7460e

Contents?: true

Size: 1.19 KB

Versions: 8

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

require 'semaphore'

module RubyRabbitmqJanus
  module Rabbit
    # Define an module for create an publisher
    module Publisher
      # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>

      # # Parent class for all publisher
      # This element send and read a message in rabbitmq Queue
      #
      # @!attribute [r] response
      #   @return [RubyRabbitmqJanus::Janus::Responses::Response]
      #     Given a Janus response
      #
      # @abstract Publish message in RabbitMQ
      class BasePublisher
        attr_reader :responses

        # Define a base publisher
        def initialize
          @responses = []
          @semaphore = Semaphore.new
          @lock = Mutex.new
        rescue
          raise Errors::Rabbit::BasePublisher::Initialize
        end

        private

        attr_accessor :semaphore, :lock

        def return_response
          @semaphore.wait
          response = nil
          @lock.synchronize do
            response = @responses.shift
          end
          response
        end
      end
    end
  end
end

require 'rrj/rabbit/publish/publisher'
require 'rrj/rabbit/publish/listener'
require 'rrj/rabbit/publish/listener_admin'

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ruby_rabbitmq_janus-2.5.1.pre.217 lib/rrj/rabbit/publish/base_publisher.rb
ruby_rabbitmq_janus-2.5.1 lib/rrj/rabbit/publish/base_publisher.rb
ruby_rabbitmq_janus-2.5.1.pre.215 lib/rrj/rabbit/publish/base_publisher.rb
ruby_rabbitmq_janus-2.5.0 lib/rrj/rabbit/publish/base_publisher.rb
ruby_rabbitmq_janus-2.5.0.pre.213 lib/rrj/rabbit/publish/base_publisher.rb
ruby_rabbitmq_janus-2.5.0.pre.210 lib/rrj/rabbit/publish/base_publisher.rb
ruby_rabbitmq_janus-2.5.0.pre.209 lib/rrj/rabbit/publish/base_publisher.rb
ruby_rabbitmq_janus-2.4.0.pre.208 lib/rrj/rabbit/publish/base_publisher.rb