diff options
-rw-r--r-- | ryu/controller/dispatcher.py | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/ryu/controller/dispatcher.py b/ryu/controller/dispatcher.py index 32197fe3..c4ba5772 100644 --- a/ryu/controller/dispatcher.py +++ b/ryu/controller/dispatcher.py @@ -32,18 +32,16 @@ LOG = logging.getLogger('ryu.controller.dispatcher') class EventQueue(TrackInstances): - # weakref: break circular reference - # self._ev_q_weakref == weakref.ref(self) - _ev_q_weakref = None + _ev_q = None def set_ev_q(self): - self.__class__._ev_q_weakref = weakref.ref(self) + # Be careful: circular reference + # It is assumed that event queue for EventQueue is never freed. + self.__class__._ev_q = self - def _get_ev_q(self): - ev_q = self._ev_q_weakref - if ev_q is not None: - ev_q = ev_q() - return ev_q + @classmethod + def _get_ev_q(cls): + return cls._ev_q def _queue_q_ev(self, ev): ev_q = self._get_ev_q() |