diff options
-rw-r--r-- | ryu/base/app_manager.py | 10 | ||||
-rw-r--r-- | ryu/controller/event.py | 12 |
2 files changed, 22 insertions, 0 deletions
diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py index d977b409..f20b87cc 100644 --- a/ryu/base/app_manager.py +++ b/ryu/base/app_manager.py @@ -62,6 +62,7 @@ class RyuApp(object): self.observers = {} self.threads = [] self.events = Queue() + self.replies = Queue() self.threads.append(gevent.spawn(self._event_loop)) def register_handler(self, ev_cls, handler): @@ -84,6 +85,15 @@ class RyuApp(object): return observers + def send_reply(self, rep): + SERVICE_BRICKS[rep.dst].replies.put(rep) + + def send_request(self, req): + req.src = self.name + self.send_event(req.dst, req) + # going to sleep for the reply + return self.replies.get() + def _event_loop(self): while True: ev = self.events.get() diff --git a/ryu/controller/event.py b/ryu/controller/event.py index 59740f51..4d583d9d 100644 --- a/ryu/controller/event.py +++ b/ryu/controller/event.py @@ -18,3 +18,15 @@ class EventBase(object): # Nothing yet pass + + +class EventRequestBase(EventBase): + def __init__(self, dst): + super(EventRequestBase, self).__init__() + self.dst = dst + + +class EventReplyBase(EventBase): + def __init__(self, dst): + super(EventReplyBase, self).__init__() + self.dst = dst |