Sha256: d5b1c15197e477a651416f3601d5d8ffbce6c176b4a0f3c0cc683cdbdb824ace

Contents?: true

Size: 797 Bytes

Versions: 1

Compression:

Stored size: 797 Bytes

Contents

#
# implementation of the message broker which only dispatches
# messages to internally registered listeners
#
#
module Seamless
	class InmemoryMessageBroker
		include Singleton

		def initialize 
			@listeners={}
		end	  	
	
	  	def register_listener(type,listener)
			array = @listeners[type]
			if array==nil
			  array=[]
			  @listeners[type]=array
			end
			array << listener
	  	end
	  	
	  	def unregister_listener(type,listener)
	  		array = @listeners[type]
	  		array.delete_if { |a| a == listener } if array
	  	end
	  	
	  
	  	def send (req,type,obj)
			array = @listeners[type]
			if array
			  array.each do |listener|
				begin
				  listener.call(req,type,obj)
				rescue => error
				  puts $!
				  raise error
				end
			  end
			  return true
			end
			false
	  	end
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
seamless-1.0.0 lib/seamless/messagebroker/inmemory_message_broker.rb