Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1607)

Unified Diff: sync/tools/testserver/sync_testserver.py

Issue 797253003: Make Python sync server stoppable (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use StoppableServer, override handle_request instead Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/tools/testserver/sync_testserver.py
diff --git a/sync/tools/testserver/sync_testserver.py b/sync/tools/testserver/sync_testserver.py
index b3ca64203043cac0040294efc69ebd98b3f917d3..d65be40ffbbffdc3dbe95889d9902e9d7057f76d 100755
--- a/sync/tools/testserver/sync_testserver.py
+++ b/sync/tools/testserver/sync_testserver.py
@@ -70,10 +70,8 @@ class SyncHTTPServer(testserver_base.ClientRestrictingServerMixIn,
def GetAuthenticated(self):
return self.authenticated
- def serve_forever(self):
- """This is a merge of asyncore.loop() and SocketServer.serve_forever().
- """
-
+ def handle_request(self):
+ """Adaptation of asyncore.loop"""
def HandleXmppSocket(fd, socket_map, handler):
"""Runs the handler for the xmpp connection for fd.
@@ -92,44 +90,43 @@ class SyncHTTPServer(testserver_base.ClientRestrictingServerMixIn,
except:
xmpp_connection.handle_error()
- while True:
- read_fds = [ self.fileno() ]
- write_fds = []
- exceptional_fds = []
-
- for fd, xmpp_connection in self._xmpp_socket_map.items():
- is_r = xmpp_connection.readable()
- is_w = xmpp_connection.writable()
- if is_r:
- read_fds.append(fd)
- if is_w:
- write_fds.append(fd)
- if is_r or is_w:
- exceptional_fds.append(fd)
+ read_fds = [ self.fileno() ]
+ write_fds = []
+ exceptional_fds = []
- try:
- read_fds, write_fds, exceptional_fds = (
- select.select(read_fds, write_fds, exceptional_fds))
- except select.error, err:
- if err.args[0] != errno.EINTR:
- raise
- else:
- continue
-
- for fd in read_fds:
- if fd == self.fileno():
- self.HandleRequestNoBlock()
- continue
- HandleXmppSocket(fd, self._xmpp_socket_map,
- asyncore.dispatcher.handle_read_event)
-
- for fd in write_fds:
- HandleXmppSocket(fd, self._xmpp_socket_map,
- asyncore.dispatcher.handle_write_event)
-
- for fd in exceptional_fds:
- HandleXmppSocket(fd, self._xmpp_socket_map,
- asyncore.dispatcher.handle_expt_event)
+ for fd, xmpp_connection in self._xmpp_socket_map.items():
+ is_r = xmpp_connection.readable()
+ is_w = xmpp_connection.writable()
+ if is_r:
+ read_fds.append(fd)
+ if is_w:
+ write_fds.append(fd)
+ if is_r or is_w:
+ exceptional_fds.append(fd)
+
+ try:
+ read_fds, write_fds, exceptional_fds = (
+ select.select(read_fds, write_fds, exceptional_fds))
+ except select.error, err:
+ if err.args[0] != errno.EINTR:
+ raise
+ else:
+ return
+
+ for fd in read_fds:
+ if fd == self.fileno():
+ self.HandleRequestNoBlock()
+ return
+ HandleXmppSocket(fd, self._xmpp_socket_map,
+ asyncore.dispatcher.handle_read_event)
+
+ for fd in write_fds:
+ HandleXmppSocket(fd, self._xmpp_socket_map,
+ asyncore.dispatcher.handle_write_event)
+
+ for fd in exceptional_fds:
+ HandleXmppSocket(fd, self._xmpp_socket_map,
+ asyncore.dispatcher.handle_expt_event)
class SyncPageHandler(testserver_base.BasePageHandler):
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698