Skip to content

Commit 56e8b2f

Browse files
committed
Improvements
1 parent bc3a718 commit 56e8b2f

File tree

4 files changed

+338
-22
lines changed

4 files changed

+338
-22
lines changed

src/event.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class EventBus:
2+
"""
3+
A simple EventBus to publish/subscribe to named events.
4+
"""
5+
def __init__(self):
6+
self.listeners = {}
7+
8+
def subscribe(self, event_name, callback):
9+
"""Subscribe a callback to a specific event_name."""
10+
if event_name not in self.listeners:
11+
self.listeners[event_name] = []
12+
self.listeners[event_name].append(callback)
13+
14+
def unsubscribe(self, event_name, callback):
15+
"""Unsubscribe a callback from a specific event_name."""
16+
if event_name in self.listeners and callback in self.listeners[event_name]:
17+
self.listeners[event_name].remove(callback)
18+
19+
def publish(self, event_name, *args, **kwargs):
20+
"""Publish an event, invoking all callbacks subscribed to event_name."""
21+
if event_name in self.listeners:
22+
for callback in self.listeners[event_name]:
23+
callback(*args, **kwargs)

0 commit comments

Comments
 (0)