class Proclib::Channel
Simple thread-safe communication mechanism
Constants
- Message
- UnexpectedMessageType
Attributes
allowed_types[R]
Public Class Methods
new(*types)
click to toggle source
# File lib/proclib/channel.rb, line 13 def initialize(*types) @allowed_types = types end
Public Instance Methods
close()
click to toggle source
# File lib/proclib/channel.rb, line 27 def close queue.push(:done) end
each() { |msg| ... }
click to toggle source
# File lib/proclib/channel.rb, line 31 def each raise(ArgumentError, 'Block Expected!') unless block_given? while msg = queue.pop break if msg == :done yield msg end end
emit(type, data = nil)
click to toggle source
# File lib/proclib/channel.rb, line 17 def emit(type, data = nil) unless allowed_types.include?(type) raise UnexpectedMessageType, "Message type expected to be one of `#{allowed_types}`. "\ "Got: `#{type}`" end queue.push(Message.new(type, data)) end
queue()
click to toggle source
# File lib/proclib/channel.rb, line 40 def queue @queue ||= Queue.new end