summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2012-02-24 14:37:33 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2012-03-01 09:06:54 +0900
commit1ca3314a6664b6b2de1a90339caacd2611939b63 (patch)
tree34725c44f72e3e97a19d2f49b7a653a2d2fb6ec8
parent68b1424ef37e8b8c0b0a4175689328fca2055b70 (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.py16
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()