class EM::RocketIO::Linda::Client::TupleSpace
Attributes
linda[R]
name[R]
Public Class Methods
new(name, linda)
click to toggle source
# File lib/em-rocketio-linda-client/client.rb, line 28 def initialize(name, linda) @name = name @linda = linda end
Public Instance Methods
list(tuple, &block)
click to toggle source
# File lib/em-rocketio-linda-client/client.rb, line 98 def list(tuple, &block) unless [Hash, Array].include? tuple.class raise ArgumentError, "tuple must be Array or Hash" end callback_id = make_callback_id if block_given? @linda.io.once "__linda_list_callback_#{callback_id}" do |list| block.call list end @linda.io.push "__linda_list", [@name, tuple, callback_id] return end results = nil @linda.io.once "__linda_list_callback_#{callback_id}" do |list| results = list end @linda.io.push "__linda_list", [@name, tuple, callback_id] while results == nil do sleep 0.1 end return results end
read(tuple, &block)
click to toggle source
# File lib/em-rocketio-linda-client/client.rb, line 40 def read(tuple, &block) unless [Hash, Array].include? tuple.class raise ArgumentError, "tuple must be Array or Hash" end callback_id = make_callback_id if block_given? @linda.io.once "__linda_read_callback_#{callback_id}" do |data| block.call(data['tuple'], TupleInfo.new(data['info'])) end @linda.io.push "__linda_read", [@name, tuple, callback_id] return end result_tuple = nil @linda.io.once "__linda_read_callback_#{callback_id}" do |data| result_tuple = data['tuple'] end @linda.io.push "__linda_read", [@name, tuple, callback_id] while !result_tuple do sleep 0.1 end return result_tuple end
take(tuple, &block)
click to toggle source
# File lib/em-rocketio-linda-client/client.rb, line 63 def take(tuple, &block) unless [Hash, Array].include? tuple.class raise ArgumentError, "tuple must be Array or Hash" end callback_id = make_callback_id if block_given? @linda.io.once "__linda_take_callback_#{callback_id}" do |data| block.call data['tuple'], TupleInfo.new(data['info']) end @linda.io.push "__linda_take", [@name, tuple, callback_id] return end result_tuple = nil @linda.io.once "__linda_take_callback_#{callback_id}" do |data| result_tuple = data['tuple'] end @linda.io.push "__linda_take", [@name, tuple, callback_id] while !result_tuple do sleep 0.1 end return result_tuple end
watch(tuple, &block)
click to toggle source
# File lib/em-rocketio-linda-client/client.rb, line 86 def watch(tuple, &block) unless [Hash, Array].include? tuple.class raise ArgumentError, "tuple must be Array or Hash" end return unless block_given? callback_id = make_callback_id @linda.io.on "__linda_watch_callback_#{callback_id}" do |data| block.call data['tuple'], TupleInfo.new(data['info']) end @linda.io.push "__linda_watch", [@name, tuple, callback_id] end
write(tuple, opts={})
click to toggle source
# File lib/em-rocketio-linda-client/client.rb, line 33 def write(tuple, opts={}) unless [Hash, Array].include? tuple.class raise ArgumentError, "tuple must be Array or Hash" end @linda.io.push "__linda_write", [@name, tuple, opts] end
Private Instance Methods
make_callback_id()
click to toggle source
# File lib/em-rocketio-linda-client/client.rb, line 122 def make_callback_id "#{Time.now.to_i}#{Time.now.usec}_#{rand(1000000).to_i}" end