Class: FiberRecycling::NormalFiberBackend
- Inherits:
-
FiberBackend
- Object
- FiberBackend
- FiberRecycling::NormalFiberBackend
- Defined in:
- lib/fiber_recycling/normal_fiber_backend.rb
Class Method Summary collapse
Instance Method Summary collapse
- #alive? ⇒ Boolean
-
#initialize(fiber, block) ⇒ NormalFiberBackend
constructor
A new instance of NormalFiberBackend.
- #inspect ⇒ Object
- #resume(*args) ⇒ Object
- #to_s ⇒ Object
- #transfer(*args) ⇒ Object
Constructor Details
#initialize(fiber, block) ⇒ NormalFiberBackend
Returns a new instance of NormalFiberBackend.
11 12 13 14 15 |
# File 'lib/fiber_recycling/normal_fiber_backend.rb', line 11 def initialize(fiber, block) @state = 'created' @recycled_fiber = RecycledFiberPool.local.release_recycled_fiber @recycled_fiber.run { execute(fiber, block) } end |
Class Method Details
.yield(*args) ⇒ Object
4 5 6 7 8 9 |
# File 'lib/fiber_recycling/normal_fiber_backend.rb', line 4 def self.yield(*args) @state = 'suspended' return_value = RecycledFiber.yield(*args) @state = 'resumed' return_value end |
Instance Method Details
#alive? ⇒ Boolean
17 18 19 |
# File 'lib/fiber_recycling/normal_fiber_backend.rb', line 17 def alive? @state != 'terminated' end |
#inspect ⇒ Object
21 22 23 |
# File 'lib/fiber_recycling/normal_fiber_backend.rb', line 21 def inspect to_s end |
#resume(*args) ⇒ Object
25 26 27 28 |
# File 'lib/fiber_recycling/normal_fiber_backend.rb', line 25 def resume(*args) raise FiberError, 'dead fiber called' unless alive? @recycled_fiber.resume(*args) end |
#to_s ⇒ Object
30 31 32 |
# File 'lib/fiber_recycling/normal_fiber_backend.rb', line 30 def to_s "#<RecycledFiber::Fiber:#{object_hexid} (#{@state})>" end |
#transfer(*args) ⇒ Object
34 35 36 37 |
# File 'lib/fiber_recycling/normal_fiber_backend.rb', line 34 def transfer(*args) raise FiberError, 'dead fiber called' unless alive? @recycled_fiber.transfer(*args) end |