# HG changeset patch # User Yuya Nishihara # Date 2016-05-22 03:49:22 # Node ID d74b8a4fde3b6980b8476217940f0c2709026e18 # Parent 6011ad3b0a42a3d3b03ed4084211b23d221e31fa commandserver: extract function that serves for the current connection This will be used by new server implementation. diff --git a/hgext/chgserver.py b/hgext/chgserver.py --- a/hgext/chgserver.py +++ b/hgext/chgserver.py @@ -533,9 +533,8 @@ class chgcmdserver(commandserver.server) '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 --git a/mercurial/commandserver.py b/mercurial/commandserver.py --- a/mercurial/commandserver.py +++ b/mercurial/commandserver.py @@ -338,8 +338,8 @@ class pipeservice(object): 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 @@ class _requesthandler(socketserver.BaseR # 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 @@ class _requesthandler(socketserver.BaseR # 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):