Sha256: 50a33b7abc2be03571c8615b256a11edee36bfd5fce63485ead3559aca658c85
Contents?: true
Size: 1.51 KB
Versions: 2
Compression:
Stored size: 1.51 KB
Contents
# encoding: utf-8 require "amq/client/callbacks" require "amq/client/openable" module AMQ module Client module RegisterEntityMixin # @example Registering Channel implementation # Adapter.register_entity(:channel, Channel) # # ... so then I can do: # channel = client.channel(1) # # instead of: # channel = Channel.new(client, 1) def register_entity(name, klass) define_method(name) do |*args, &block| klass.new(self, *args, &block) end # define_method end # register_entity end # RegisterEntityMixin module ProtocolMethodHandlers def handle(klass, &block) AMQ::Client::HandlersRegistry.register(klass, &block) end def handlers AMQ::Client::HandlersRegistry.handlers end end # ProtocolMethodHandlers # AMQ entities, as implemented by AMQ::Client, have callbacks and can run them # when necessary. # # @note Exchanges and queues implementation is based on this class. # # @abstract module Entity # # Behaviors # include Openable include Callbacks # # API # # @return [Array<#call>] attr_reader :callbacks def initialize(connection) @connection = connection # Be careful with default values for #ruby hashes: h = Hash.new(Array.new); h[:key] ||= 1 # won't assign anything to :key. MK. @callbacks = Hash.new end # initialize end # Entity end # Client end # AMQ
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
amq-client-0.7.0.alpha34 | lib/amq/client/entity.rb |
amq-client-0.7.0.alpha33 | lib/amq/client/entity.rb |