Class: EM::RocketIO::Linda::Client::TupleSpace
- Inherits:
-
Object
- Object
- EM::RocketIO::Linda::Client::TupleSpace
- Defined in:
- lib/em-rocketio-linda-client/client.rb
Instance Attribute Summary collapse
-
#linda ⇒ Object
readonly
Returns the value of attribute linda.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#initialize(name, linda) ⇒ TupleSpace
constructor
A new instance of TupleSpace.
- #list(tuple, &block) ⇒ Object
- #read(tuple, &block) ⇒ Object
- #take(tuple, &block) ⇒ Object
- #watch(tuple, &block) ⇒ Object
- #write(tuple, opts = {}) ⇒ Object
Constructor Details
#initialize(name, linda) ⇒ TupleSpace
Returns a new instance of TupleSpace.
28 29 30 31 |
# File 'lib/em-rocketio-linda-client/client.rb', line 28 def initialize(name, linda) @name = name @linda = linda end |
Instance Attribute Details
#linda ⇒ Object (readonly)
Returns the value of attribute linda.
27 28 29 |
# File 'lib/em-rocketio-linda-client/client.rb', line 27 def linda @linda end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
27 28 29 |
# File 'lib/em-rocketio-linda-client/client.rb', line 27 def name @name end |
Instance Method Details
#list(tuple, &block) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# 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) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# 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) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# 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) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 |
# 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 = {}) ⇒ Object
33 34 35 36 37 38 |
# 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 |