module Emit
Constants
- Scheduler
Need to create the singleton instance in main fiber.
- VERSION
Public Class Methods
channel()
click to toggle source
# File lib/emit.rb, line 40 def channel Channel.new end
choice(*guards)
click to toggle source
# File lib/emit.rb, line 56 def choice(*guards) Alternation.new(guards).execute end
method_missing(name, *args, **kwargs)
click to toggle source
# File lib/emit.rb, line 60 def method_missing(name, *args, **kwargs) Emit.process(*args, **kwargs, &method(name.to_sym)) end
parallel(*processes, run: true)
click to toggle source
# File lib/emit.rb, line 22 def parallel(*processes, run: true) processes.flatten! processes.each do |process| process.start Scheduler.enqueue(process) end if run Scheduler.join(processes) processes.map(&:return_value) end end
poison(*channel_ends)
click to toggle source
# File lib/emit.rb, line 48 def poison(*channel_ends) channel_ends.each(&:poison) end
process(*args, **kwargs, &block)
click to toggle source
# File lib/emit.rb, line 44 def process(*args, **kwargs, &block) Process.new(*args, **kwargs, &block) end
retire(*channel_ends)
click to toggle source
# File lib/emit.rb, line 52 def retire(*channel_ends) channel_ends.each(&:retire) end
sequence(*processes)
click to toggle source
# File lib/emit.rb, line 36 def sequence(*processes) processes.flatten.each(&:run) end