Sha256: d7b1323b3cecc138bf9967d11d376628361d5d4107d9471f3938f65167377e05
Contents?: true
Size: 859 Bytes
Versions: 2
Compression:
Stored size: 859 Bytes
Contents
require "set" module Celluloid module Internals class Handlers def initialize @handlers = Set.new end def handle(*patterns, &block) patterns.each do |pattern| handler = Handler.new pattern, block @handlers << handler end end # Handle incoming messages def handle_message(message) handler = @handlers.find { |h| h.match(message) } handler.call(message) if handler handler end end # Methods blocking on a call to receive class Handler def initialize(pattern, block) @pattern = pattern @block = block end # Match a message with this receiver's block def match(message) @pattern === message end def call(message) @block.call message end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
celluloid-0.18.0 | lib/celluloid/internals/handlers.rb |
celluloid-0.18.0.pre2 | lib/celluloid/internals/handlers.rb |