class MessageChannel::Druby::Agent
Public Class Methods
new( host: @@host, port: @@port )
click to toggle source
# File lib/message_channel/druby.rb, line 64 def initialize( host: @@host, port: @@port ) @@host = host @@port = port @uri = "druby://#{host}:#{port}" if !defined?( @@Broker ) || @@Broker.nil? @@Broker = Broker.new DRb.start_service( @uri, @@Broker ) rescue nil end @drb = DRbObject.new_with_uri( @uri ) @queue_ids = {} end
Public Instance Methods
listen_each( pattern, &block )
click to toggle source
# File lib/message_channel/druby.rb, line 82 def listen_each( pattern, &block ) queue_id = @drb.subscribe( pattern ) @queue_ids[pattern] = queue_id while true topic, message = * @drb.wait( queue_id ) break if topic.nil? block.call( topic, message ) end rescue => error nil ensure @drb.unsubscribe( queue_id ) @queue_ids.delete( pattern ) rescue nil end
listen_once( pattern )
click to toggle source
# File lib/message_channel/druby.rb, line 78 def listen_once( pattern ) topic, message = * @drb.fetch( pattern ) end
notify( topic, message )
click to toggle source
# File lib/message_channel/druby.rb, line 104 def notify( topic, message ) @drb.publish( topic, message ) end
unlisten( pattern )
click to toggle source
# File lib/message_channel/druby.rb, line 97 def unlisten( pattern ) if ( queue_id = @queue_ids[pattern] ) @drb.unsubscribe( queue_id ) @queue_ids.delete( pattern ) rescue nil end end