Class: RestCore::Future::FutureFiber
- Inherits:
-
RestCore::Future
- Object
- RestCore::Future
- RestCore::Future::FutureFiber
- Defined in:
- lib/rest-core/engine/future/future_fiber.rb
Constant Summary
Constant Summary
Constants included from RestCore
ASYNC, DRY, RestCore::FAIL, RestCore::FUTURE, LOG, REQUEST_HEADERS, REQUEST_METHOD, REQUEST_PATH, REQUEST_PAYLOAD, REQUEST_QUERY, RESPONSE_BODY, RESPONSE_HEADERS, RESPONSE_STATUS, RootFiber, TIMER, Universal, VERSION
Instance Method Summary (collapse)
-
- (FutureFiber) initialize(*args)
constructor
A new instance of FutureFiber.
- - (Object) resume
- - (Object) wait
- - (Object) wrap
Methods inherited from RestCore::Future
#callback, #callback_in_async, create, #loaded?, #on_error, #on_load, #proxy_body, #proxy_headers, #proxy_status, #yield
Methods included from RestCore
Constructor Details
- (FutureFiber) initialize(*args)
A new instance of FutureFiber
5 6 7 8 |
# File 'lib/rest-core/engine/future/future_fiber.rb', line 5 def initialize *args super self.fibers = [] end |
Instance Method Details
- (Object) resume
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/rest-core/engine/future/future_fiber.rb', line 19 def resume return if fibers.empty? current_fibers = fibers.dup fibers.clear current_fibers.each{ |f| next unless f.alive? next_tick{ f.resume } } resume end |
- (Object) wait
14 15 16 17 |
# File 'lib/rest-core/engine/future/future_fiber.rb', line 14 def wait fibers << Fiber.current Fiber.yield until loaded? # it might be resumed by some other futures! end |
- (Object) wrap
10 11 12 |
# File 'lib/rest-core/engine/future/future_fiber.rb', line 10 def wrap Fiber.new{ yield }.resume end |