# A discrete (ideally tuple-like) value at the # boundaries between adapters and reactors class AbstractAdapter # def initialize(rx) # @reactor = rx # end

# def drive # @reactor.engine.turn # end

# def handle(event) # @reactor.react(event) # end end

class ConsoleAdapter # def handle(event)

# end end

class AbstractDisruptor # include Disruptor::Processor

# def initialize(adapter) # @adapter = adapter

# end

# def absorb(events) # @adapter.handle(event) # process_event(event) # end

# def process_event(event) # raise “implement in subclass” # end end

class SimpleDisruptor < AbstractDisruptor

end

class SimpleActor < AbstractReactor # def perform(story) name, *args, &blk) # process(story.events) # story.events.each do |event| # @engine.adapt do |event| # @disruptor.absorb(event) # end # end # end end

class WebsocketReactor < SimpleReactor # def react(name, *args, &blk) # raise ‘not implemented’ # end end