diff options
-rw-r--r-- | ryu/base/app_manager.py | 7 | ||||
-rw-r--r-- | 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 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): |