- To distinguish synchronous request or not.
- Event src is needed for asynchronous request too.

Signed-off-by: YAMADA Hideki <yamada.hid...@po.ntts.co.jp>
---
 ryu/base/app_manager.py |    7 ++++++-
 ryu/controller/event.py |    6 ++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py
index a3abc85..f09ea4a 100644
--- a/ryu/base/app_manager.py
+++ b/ryu/base/app_manager.py
@@ -24,6 +24,7 @@ from gevent.queue import Queue
 from ryu import utils
 from ryu.controller.handler import register_instance
 from ryu.controller.controller import Datapath
+from ryu.controller.event import EventRequestBase, EventReplyBase
 
 LOG = logging.getLogger('ryu.base.app_manager')
 
@@ -87,10 +88,12 @@ class RyuApp(object):
         return observers
 
     def send_reply(self, rep):
+        assert isinstance(rep, EventReplyBase)
         SERVICE_BRICKS[rep.dst].replies.put(rep)
 
     def send_request(self, req):
-        req.src = self.name
+        assert isinstance(req, EventRequestBase)
+        req.sync = True
         self.send_event(req.dst, req)
         # going to sleep for the reply
         return self.replies.get()
@@ -107,6 +110,8 @@ class RyuApp(object):
 
     def send_event(self, name, ev):
         if name in SERVICE_BRICKS:
+            if isinstance(ev, EventRequestBase):
+                ev.src = self.name
             LOG.debug("EVENT %s->%s %s" %
                       (self.name, name, ev.__class__.__name__))
             SERVICE_BRICKS[name]._send_event(ev)
diff --git a/ryu/controller/event.py b/ryu/controller/event.py
index 4d583d9..8191710 100644
--- a/ryu/controller/event.py
+++ b/ryu/controller/event.py
@@ -21,9 +21,11 @@ class EventBase(object):
 
 
 class EventRequestBase(EventBase):
-    def __init__(self, dst):
+    def __init__(self):
         super(EventRequestBase, self).__init__()
-        self.dst = dst
+        self.dst = None  # app.name of provide the event.
+        self.src = None
+        self.sync = False
 
 
 class EventReplyBase(EventBase):
-- 
1.7.9.5



------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to