Sha256: e938be01d42b37195bcfd965ae3f2ea16d940b37b4cdb8fe3ee20b5b28b6c860
Contents?: true
Size: 1.38 KB
Versions: 2
Compression:
Stored size: 1.38 KB
Contents
require "thread" module Bunny class ChannelIdAllocator # # API # def initialize max_channel = (1 << 16) - 1 @int_allocator ||= AMQ::IntAllocator.new(1, max_channel) @channel_id_mutex ||= Mutex.new end # Returns next available channel id. This method is thread safe. # # @return [Fixnum] # @api public # @see ChannelManager#release_channel_id # @see ChannelManager#reset_channel_id_allocator def next_channel_id @channel_id_mutex.synchronize do @int_allocator.allocate end end # Releases previously allocated channel id. This method is thread safe. # # @param [Fixnum] Channel id to release # @api public # @see ChannelManager#next_channel_id # @see ChannelManager#reset_channel_id_allocator def release_channel_id(i) @channel_id_mutex.synchronize do @int_allocator.release(i) end end # self.release_channel_id(i) def allocated_channel_id?(i) @channel_id_mutex.synchronize do @int_allocator.allocated?(i) end end # Resets channel allocator. This method is thread safe. # @api public # @see Channel.next_channel_id # @see Channel.release_channel_id def reset_channel_id_allocator @channel_id_mutex.synchronize do @int_allocator.reset end end # reset_channel_id_allocator end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bunny-0.9.0.pre2 | lib/bunny/channel_id_allocator.rb |
bunny-0.9.0.pre1 | lib/bunny/channel_id_allocator.rb |