Thanks for reviewing,

On Mon, 27 Jan 2014 10:10:56 +0900
Satoshi Kobayashi <[email protected]> wrote:

>> +from oslo.config import cfg
>> +import socket
>> +import eventlet
>>
> 
> Must eventlet be used directly? I feel that it is better to abstract by
> ryu.lib.hub.

Yeah, I addressed two isseus that you pointed out. The following is a
diff:

diff --git a/ryu/services/protocols/vrrp/rpc_manager.py 
b/ryu/services/protocols/vrrp/rpc_manager.py
index 3aa03b2..0ba15e1 100644
--- a/ryu/services/protocols/vrrp/rpc_manager.py
+++ b/ryu/services/protocols/vrrp/rpc_manager.py
@@ -15,7 +15,6 @@
 
 from oslo.config import cfg
 import socket
-import eventlet
 
 import netaddr
 from ryu.base import app_manager
@@ -54,7 +53,7 @@ class RpcVRRPManager(app_manager.RyuApp):
         self._kwargs = kwargs
         self._peers = []
         self._rpc_events = hub.Queue(128)
-        self.serverThread = hub.spawn(self._peer_accept_thread)
+        self.server_thread = hub.spawn(self._peer_accept_thread)
         self.event_thread = hub.spawn(self._rpc_request_loop_thread)
 
     def _rpc_request_loop_thread(self):
@@ -81,17 +80,19 @@ class RpcVRRPManager(app_manager.RyuApp):
         # the peer connection is closed
         self._peers.remove(peer)
 
+    def peer_accept_handler(self, new_sock, addr):
+        peer = Peer(self._rpc_events)
+        table = {
+            rpc.MessageType.REQUEST: peer._handle_vrrp_request,
+            }
+        peer._endpoint = rpc.EndPoint(new_sock, disp_table=table)
+        self._peers.append(peer)
+        hub.spawn(self._peer_loop_thread, peer)
+
     def _peer_accept_thread(self):
-        server = eventlet.listen(('', CONF.vrrp_rpc_port))
-        while True:
-            new_sock, address = server.accept()
-            peer = Peer(self._rpc_events)
-            table = {
-                rpc.MessageType.REQUEST: peer._handle_vrrp_request,
-                }
-            peer._endpoint = rpc.EndPoint(new_sock, disp_table=table)
-            self._peers.append(peer)
-            hub.spawn(self._peer_loop_thread, peer)
+        server = hub.StreamServer(('', CONF.vrrp_rpc_port),
+                                  self.peer_accept_handler)
+        server.serve_forever()
 
     def _params_to_dict(self, params, keys):
         d = {}


------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to