Skip to content

Commit c8f5479

Browse files
authored
Allow executor extensions to publish events (#686)
The active executor extension already has a private variable holding the event controller, so it's not difficult to add a method to allow implementations of the executor extensions to publish events as well.
1 parent a74fa97 commit c8f5479

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

colcon_core/executor/__init__.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ class ExecutorExtensionPoint:
141141
"""
142142

143143
"""The version of the executor extension interface."""
144-
EXTENSION_POINT_VERSION = '1.0'
144+
EXTENSION_POINT_VERSION = '1.1'
145145

146146
"""The default priority of executor extensions."""
147147
PRIORITY = 100
@@ -191,6 +191,14 @@ def execute(
191191
"""
192192
raise NotImplementedError()
193193

194+
def put_event_into_queue(self, event):
195+
"""
196+
Post a message event into the event queue.
197+
198+
:param event: The event
199+
"""
200+
self._event_controller.get_queue().put((event, self))
201+
194202
def _flush(self):
195203
if self._event_controller is None:
196204
return

test/test_executor.py

+3
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,12 @@ def test_interface():
123123
interface = ExecutorExtensionPoint()
124124
interface._flush()
125125
event_controller = Mock()
126+
event_controller.get_queue.returns = Mock()
126127
interface.set_event_controller(event_controller)
128+
interface.put_event_into_queue(object())
127129
interface._flush()
128130
assert event_controller.flush.call_count == 1
131+
assert event_controller.get_queue().put.call_count == 1
129132

130133

131134
class Extension1(ExecutorExtensionPoint):

0 commit comments

Comments
 (0)