hgext/chgserver.py
changeset 28328 e00e57d83653
parent 28327 3ab370f84a23
child 28342 bd05d38a1002
equal deleted inserted replaced
28327:3ab370f84a23 28328:e00e57d83653
   332     ('cout', 'fout', 'wb'),
   332     ('cout', 'fout', 'wb'),
   333     ('cerr', 'ferr', 'wb'),
   333     ('cerr', 'ferr', 'wb'),
   334 ]
   334 ]
   335 
   335 
   336 class chgcmdserver(commandserver.server):
   336 class chgcmdserver(commandserver.server):
   337     def __init__(self, ui, repo, fin, fout, sock):
   337     def __init__(self, ui, repo, fin, fout, sock, hashstate, baseaddress):
   338         super(chgcmdserver, self).__init__(
   338         super(chgcmdserver, self).__init__(
   339             _newchgui(ui, channeledsystem(fin, fout, 'S')), repo, fin, fout)
   339             _newchgui(ui, channeledsystem(fin, fout, 'S')), repo, fin, fout)
   340         self.clientsock = sock
   340         self.clientsock = sock
   341         self._oldios = []  # original (self.ch, ui.fp, fd) before "attachio"
   341         self._oldios = []  # original (self.ch, ui.fp, fd) before "attachio"
       
   342         self.hashstate = hashstate
       
   343         self.baseaddress = baseaddress
   342 
   344 
   343     def cleanup(self):
   345     def cleanup(self):
   344         # dispatch._runcatch() does not flush outputs if exception is not
   346         # dispatch._runcatch() does not flush outputs if exception is not
   345         # handled by dispatch._dispatch()
   347         # handled by dispatch._dispatch()
   346         self.ui.flush()
   348         self.ui.flush()
   491         # process pass kernel "is_current_pgrp_orphaned" check so signals like
   493         # process pass kernel "is_current_pgrp_orphaned" check so signals like
   492         # SIGTSTP, SIGTTIN, SIGTTOU are not ignored.
   494         # SIGTSTP, SIGTTIN, SIGTTOU are not ignored.
   493         os.setpgid(0, 0)
   495         os.setpgid(0, 0)
   494         ui = self.server.ui
   496         ui = self.server.ui
   495         repo = self.server.repo
   497         repo = self.server.repo
   496         sv = chgcmdserver(ui, repo, self.rfile, self.wfile, self.connection)
   498         sv = chgcmdserver(ui, repo, self.rfile, self.wfile, self.connection,
       
   499                           self.server.hashstate, self.server.baseaddress)
   497         try:
   500         try:
   498             try:
   501             try:
   499                 sv.serve()
   502                 sv.serve()
   500             # handle exceptions that may be raised by command server. most of
   503             # handle exceptions that may be raised by command server. most of
   501             # known exceptions are caught by dispatch.
   504             # known exceptions are caught by dispatch.
   586         self._inithashstate()
   589         self._inithashstate()
   587         class cls(AutoExitMixIn, SocketServer.ForkingMixIn,
   590         class cls(AutoExitMixIn, SocketServer.ForkingMixIn,
   588                   SocketServer.UnixStreamServer):
   591                   SocketServer.UnixStreamServer):
   589             ui = self.ui
   592             ui = self.ui
   590             repo = self.repo
   593             repo = self.repo
       
   594             hashstate = self.hashstate
       
   595             baseaddress = self.baseaddress
   591         self.server = cls(self.address, _requesthandler)
   596         self.server = cls(self.address, _requesthandler)
   592         self.server.idletimeout = self.ui.configint(
   597         self.server.idletimeout = self.ui.configint(
   593             'chgserver', 'idletimeout', self.server.idletimeout)
   598             'chgserver', 'idletimeout', self.server.idletimeout)
   594         self.server.startautoexitthread()
   599         self.server.startautoexitthread()
   595         self._createsymlink()
   600         self._createsymlink()