mercurial/wireprotoserver.py
branchstable
changeset 51572 13c004b54cbe
parent 50420 45c7bada5200
equal deleted inserted replaced
51571:74230abb2504 51572:13c004b54cbe
   525 
   525 
   526 class sshserver:
   526 class sshserver:
   527     def __init__(self, ui, repo, logfh=None, accesshidden=False):
   527     def __init__(self, ui, repo, logfh=None, accesshidden=False):
   528         self._ui = ui
   528         self._ui = ui
   529         self._repo = repo
   529         self._repo = repo
   530         self._fin, self._fout = ui.protectfinout()
       
   531         self._accesshidden = accesshidden
   530         self._accesshidden = accesshidden
   532 
   531         self._logfh = logfh
   533         # Log write I/O to stdout and stderr if configured.
       
   534         if logfh:
       
   535             self._fout = util.makeloggingfileobject(
       
   536                 logfh, self._fout, b'o', logdata=True
       
   537             )
       
   538             ui.ferr = util.makeloggingfileobject(
       
   539                 logfh, ui.ferr, b'e', logdata=True
       
   540             )
       
   541 
   532 
   542     def serve_forever(self):
   533     def serve_forever(self):
   543         self.serveuntil(threading.Event())
   534         self.serveuntil(threading.Event())
   544         self._ui.restorefinout(self._fin, self._fout)
       
   545 
   535 
   546     def serveuntil(self, ev):
   536     def serveuntil(self, ev):
   547         """Serve until a threading.Event is set."""
   537         """Serve until a threading.Event is set."""
   548         _runsshserver(
   538         with self._ui.protectedfinout() as (fin, fout):
   549             self._ui, self._repo, self._fin, self._fout, ev, self._accesshidden
   539             if self._logfh:
   550         )
   540                 # Log write I/O to stdout and stderr if configured.
       
   541                 fout = util.makeloggingfileobject(
       
   542                     self._logfh,
       
   543                     fout,
       
   544                     b'o',
       
   545                     logdata=True,
       
   546                 )
       
   547                 self._ui.ferr = util.makeloggingfileobject(
       
   548                     self._logfh,
       
   549                     self._ui.ferr,
       
   550                     b'e',
       
   551                     logdata=True,
       
   552                 )
       
   553             _runsshserver(
       
   554                 self._ui,
       
   555                 self._repo,
       
   556                 fin,
       
   557                 fout,
       
   558                 ev,
       
   559                 self._accesshidden,
       
   560             )