提交 1ce64095 编写于 作者: A Aaron Patterson

Merge pull request #7338 from sax/master

Evented notifications should take priority over Timed
......@@ -59,10 +59,10 @@ def wait
module Subscribers # :nodoc:
def self.new(pattern, listener)
if listener.respond_to?(:call)
subscriber = Timed.new pattern, listener
else
if listener.respond_to?(:start) and listener.respond_to?(:finish)
subscriber = Evented.new pattern, listener
else
subscriber = Timed.new pattern, listener
end
unless pattern
......
......@@ -19,6 +19,12 @@ def finish(name, id, payload)
end
end
class ListenerWithTimedSupport < Listener
def call(name, start, finish, id, payload)
@events << [:call, name, start, finish, id, payload]
end
end
def test_evented_listener
notifier = Fanout.new
listener = Listener.new
......@@ -62,6 +68,20 @@ def test_listen_to_everything
[:finish, 'hello', 1, {}],
], listener.events
end
def test_evented_listener_priority
notifier = Fanout.new
listener = ListenerWithTimedSupport.new
notifier.subscribe 'hi', listener
notifier.start 'hi', 1, {}
notifier.finish 'hi', 1, {}
assert_equal [
[:start, 'hi', 1, {}],
[:finish, 'hi', 1, {}]
], listener.events
end
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册