diff options
author | Isaku Yamahata <yamahata@valinux.co.jp> | 2012-02-24 14:37:33 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2012-03-01 09:06:54 +0900 |
commit | 1ca3314a6664b6b2de1a90339caacd2611939b63 (patch) | |
tree | 34725c44f72e3e97a19d2f49b7a653a2d2fb6ec8 | |
parent | 68b1424ef37e8b8c0b0a4175689328fca2055b70 (diff) |
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 <yamahata@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-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() |