-
Notifications
You must be signed in to change notification settings - Fork 604
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Keep Track of Active Notifiers. Make Notifier usable as ContextManager. #1890
base: main
Are you sure you want to change the base?
Conversation
@zariiii9003 can we make this NotifierRegistry a little more "public"? For example we could have a Notifier factory (for a given Bus instance give me the existing Notifier or create a new one), etc. |
This would make things a bit more complicated.
However, a What kind of solution did you have in mind? |
This would be great! If I understand correctly, without such a classmethod this PR in its current state does not solve the example I put forth in #1888 (comment). A |
e06fc55
to
e35610a
Compare
can/notifier.py
Outdated
many listeners carry out flush operations to persist data. | ||
|
||
|
||
:param bus: A :ref:`bus` or a list of buses to listen to. | ||
:param bus: | ||
A :ref:`bus` or a list of buses to listen to. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A :ref:`bus` or a list of buses to listen to. | |
A :ref:`bus` or a list of buses to consume messages from. |
can/notifier.py
Outdated
self._lock = threading.Lock() | ||
|
||
self._readers: List[Union[int, threading.Thread]] = [] | ||
buses = self.bus if isinstance(self.bus, list) else [self.bus] | ||
for each_bus in buses: | ||
self._bus_list = self.bus if isinstance(self.bus, list) else [self.bus] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
self._bus_list
won't be correct after a user adds an additional Bus via add_bus
, instead prefer to create an empty bus list here in the initializer, but add them inside the add_bus
method.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. The same was true for self.bus
, i changed that to a property.
Notifier.stop()
. Adapt examples to usewith can.Notifier(...)