diff --git a/lib/tfw/event_handler_base.py b/lib/tfw/event_handler_base.py index aaf408c..04bcaf4 100644 --- a/lib/tfw/event_handler_base.py +++ b/lib/tfw/event_handler_base.py @@ -2,6 +2,7 @@ # All Rights Reserved. See LICENSE file for details. from abc import ABC, abstractmethod +from inspect import currentframe from tfw.networking.event_handlers import ServerConnector from tfw.crypto import message_checksum, KeyManager, verify_message @@ -105,6 +106,18 @@ class EventHandlerBase(ABC): """ pass + @classmethod + def get_local_instances(cls): + frame = currentframe() + if frame is None: + raise EnvironmentError('inspect.currentframe() is not supported!') + + locals_values = frame.f_back.f_locals.values() + return { + instance for instance in locals_values + if isinstance(instance, cls) + } + class FSMAwareEventHandler(EventHandlerBase, ABC): # pylint: disable=abstract-method