summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ryu/base/app_manager.py7
-rw-r--r--ryu/controller/event.py6
2 files changed, 10 insertions, 3 deletions
diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py
index a3abc85f..f09ea4a7 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 4d583d9d..8191710d 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):