From 1ca3314a6664b6b2de1a90339caacd2611939b63 Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Fri, 24 Feb 2012 14:37:33 +0900 Subject: dispatcher: eliminate use of weakref for EventQueue event queue event queue for EventQueue event can be normal reference by assuming the queue is never freed. Signed-off-by: Isaku Yamahata Signed-off-by: FUJITA Tomonori --- ryu/controller/dispatcher.py | 16 +++++++--------- 1 file 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() -- cgit v1.2.3