Sha256: 107f73598b30cce4a0c8a5655f0ac901ca0d2fe4c13c0ca635e15fd7cc261bef

Contents?: true

Size: 1.64 KB

Versions: 10

Compression:

Stored size: 1.64 KB

Contents

# encoding: utf-8

require "amq/client/async/channel"

# Basic.Cancel
module AMQ
  module Client
    module Async
      module Extensions
        module RabbitMQ
          module Basic
            module ConsumerMixin
              
              def on_cancel(&block)
                self.append_callback(:scancel, &block)

                self
              end # on_cancel(&block)
              
              def handle_cancel(basic_cancel)
                self.exec_callback(:scancel, basic_cancel)
              end # handle_cancel(basic_cancel)
              
              def self.included receiver
                receiver.handle(Protocol::Basic::Cancel) do |connection, method_frame|
                  channel      = connection.channels[method_frame.channel]
                  basic_cancel = method_frame.decode_payload
                  consumer     = channel.consumers[basic_cancel.consumer_tag]

                  # Handle the delivery only if the consumer still exists.
                  consumer.handle_cancel(basic_cancel) if consumer
                end
              end
              
            end # ConsumerMixin
            
            module QueueMixin
              
              # @api public
              def on_cancel(&block)
                @default_consumer.on_cancel(&block)
              end # on_cancel(&block)
            end
            
          end # Basic
        end # RabbitMQ
      end # Extensions

      class Consumer
        include Extensions::RabbitMQ::Basic::ConsumerMixin
      end # Consumer

      class Queue
        include Extensions::RabbitMQ::Basic::QueueMixin
      end # Queue

    end # Async
  end # Client
end # AMQ

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
amq-client-0.9.12 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-0.9.11 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-0.9.10 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-0.9.9 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-0.9.8 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-0.9.7 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-0.9.6 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-0.9.5 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-1.0.0.pre2 lib/amq/client/async/extensions/rabbitmq/cancel.rb
amq-client-1.0.0.pre1 lib/amq/client/async/extensions/rabbitmq/cancel.rb