Object
MultiFuture bunldes up multiple Future objects.
Registeres new Future object. Returns self.
# File lib/msgpack/rpc/multi_future.rb, line 76 76: def add(future) 77: future.attach_callback(&method(:callback)) 78: @all << future 79: @not_joined << future 80: self 81: end
Clears all Future objects and all callback methods.
# File lib/msgpack/rpc/multi_future.rb, line 54 54: def clear 55: @all = [] 56: 57: @not_joined = [] 58: @joined = [] 59: @error = [] 60: @success = [] 61: 62: clear_callback 63: end
Clears all callback methods registered by on_xxx methods.
# File lib/msgpack/rpc/multi_future.rb, line 66 66: def clear_callback 67: @on_all = nil 68: @on_error = nil 69: @on_success = nil 70: @on_num = {} 71: self 72: end
Waits until all Future objects join.
# File lib/msgpack/rpc/multi_future.rb, line 116 116: def join_all 117: @not_joined.each {|future| 118: future.join 119: } 120: @all 121: end
Waits until at least one Future object joins as error. Returns the joined Future object or nil.
# File lib/msgpack/rpc/multi_future.rb, line 137 137: def join_error 138: until @not_joined.empty? 139: unless @error.empty? 140: break 141: end 142: @not_joined.first.loop.run_once 143: end 144: @error.last 145: end
Waits until specified number of Future objects join. Returns the joined Future objects or nil.
# File lib/msgpack/rpc/multi_future.rb, line 149 149: def join_num(n) 150: until @not_joined.empty? 151: unless @joined.size >= n 152: return @joined 153: end 154: @not_joined.first.loop.run_once 155: end 156: nil 157: end
Waits until at least one Future object joins as success. Returns the joined Future object or nil.
# File lib/msgpack/rpc/multi_future.rb, line 125 125: def join_success 126: until @not_joined.empty? 127: unless @success.empty? 128: break 129: end 130: @not_joined.first.loop.run_once 131: end 132: @success.last 133: end
Attaches a callback method that is called when all Future objects are joined. Returns self.
# File lib/msgpack/rpc/multi_future.rb, line 86 86: def on_all(&block) 87: @on_all = block 88: self 89: end
Attaches a callback method that is called when Future objects are joined as error. Returns self.
# File lib/msgpack/rpc/multi_future.rb, line 102 102: def on_error(&block) 103: @on_error = block 104: self 105: end
Attaches a callback method that is called when specified number of Future objects are joined. Returns self.
# File lib/msgpack/rpc/multi_future.rb, line 110 110: def on_num(n, &block) 111: @on_num[n.to_i] = block 112: self 113: end
Attaches a callback method that is called when Future objects are joined as success. Returns self.
# File lib/msgpack/rpc/multi_future.rb, line 94 94: def on_success(&block) 95: @on_success = block 96: self 97: end
# File lib/msgpack/rpc/multi_future.rb, line 161 161: def callback(future) 162: if @not_joined.delete(future) 163: @joined << future 164: 165: if future.error == nil 166: @success << future 167: if @on_success 168: @on_success.call(future) rescue nil 169: end 170: else 171: @error << future 172: if @on_error 173: @on_error.call(future) rescue nil 174: end 175: end 176: 177: if callback = @on_num[@joined.size] 178: callback.call(@joined) rescue nil 179: end 180: 181: if @on_all && @not_joined.empty? 182: @on_all.call(@all) rescue nil 183: end 184: end 185: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.