# HG changeset patch # User Yuya Nishihara # Date 1463888962 -32400 # Node ID d74b8a4fde3b6980b8476217940f0c2709026e18 # Parent 6011ad3b0a42a3d3b03ed4084211b23d221e31fa commandserver: extract function that serves for the current connection This will be used by new server implementation. diff -r 6011ad3b0a42 -r d74b8a4fde3b hgext/chgserver.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) diff -r 6011ad3b0a42 -r d74b8a4fde3b mercurial/commandserver.py --- 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):