commandserver: extract function that serves for the current connection
authorYuya Nishihara <yuya@tcha.org>
Sun, 22 May 2016 12:49:22 +0900
changeset 29543 d74b8a4fde3b
parent 29542 6011ad3b0a42
child 29544 024e8f82f3de
commandserver: extract function that serves for the current connection This will be used by new server implementation.
hgext/chgserver.py
mercurial/commandserver.py
--- a/hgext/chgserver.py	Sun May 22 12:44:25 2016 +0900
+++ b/hgext/chgserver.py	Sun May 22 12:49:22 2016 +0900
@@ -533,9 +533,8 @@
                          'setumask': setumask})
 
 class _requesthandler(commandserver._requesthandler):
-    def _createcmdserver(self, conn, fin, fout):
+    def _createcmdserver(self, repo, conn, fin, fout):
         ui = self.server.ui
-        repo = self.server.repo
         return chgcmdserver(ui, repo, fin, fout, conn,
                             self.server.hashstate, self.server.baseaddress)
 
--- a/mercurial/commandserver.py	Sun May 22 12:44:25 2016 +0900
+++ b/mercurial/commandserver.py	Sun May 22 12:49:22 2016 +0900
@@ -338,8 +338,8 @@
             sv.cleanup()
             _restoreio(ui, fin, fout)
 
-class _requesthandler(socketserver.BaseRequestHandler):
-    def handle(self):
+def _serverequest(ui, repo, conn, createcmdserver):
+    if True:  # TODO: unindent
         # use a different process group from the master process, making this
         # process pass kernel "is_current_pgrp_orphaned" check so signals like
         # SIGTSTP, SIGTTIN, SIGTTOU are not ignored.
@@ -347,14 +347,12 @@
         # change random state otherwise forked request handlers would have a
         # same state inherited from parent.
         random.seed()
-        ui = self.server.ui
 
-        conn = self.request
         fin = conn.makefile('rb')
         fout = conn.makefile('wb')
         sv = None
         try:
-            sv = self._createcmdserver(conn, fin, fout)
+            sv = createcmdserver(repo, conn, fin, fout)
             try:
                 sv.serve()
             # handle exceptions that may be raised by command server. most of
@@ -387,9 +385,13 @@
             # trigger __del__ since ForkingMixIn uses os._exit
             gc.collect()
 
-    def _createcmdserver(self, conn, fin, fout):
+class _requesthandler(socketserver.BaseRequestHandler):
+    def handle(self):
+        _serverequest(self.server.ui, self.server.repo, self.request,
+                      self._createcmdserver)
+
+    def _createcmdserver(self, repo, conn, fin, fout):
         ui = self.server.ui
-        repo = self.server.repo
         return server(ui, repo, fin, fout)
 
 class unixservice(object):