Mercurial > public > mercurial-scm > hg
comparison mercurial/wireprotoserver.py @ 41285:cf8677cd7286
ui: proxy protect/restorestdio() calls to update internal flag
It should be better to manage the redirection flag solely by the ui class.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 26 Sep 2018 21:41:52 +0900 |
parents | f7011b44d205 |
children | 3e47d1ec9da5 |
comparison
equal
deleted
inserted
replaced
41284:b0e3f2d7c143 | 41285:cf8677cd7286 |
---|---|
22 wireprotov2server, | 22 wireprotov2server, |
23 ) | 23 ) |
24 from .utils import ( | 24 from .utils import ( |
25 cborutil, | 25 cborutil, |
26 interfaceutil, | 26 interfaceutil, |
27 procutil, | |
28 ) | 27 ) |
29 | 28 |
30 stringio = util.stringio | 29 stringio = util.stringio |
31 | 30 |
32 urlerr = util.urlerr | 31 urlerr = util.urlerr |
780 | 779 |
781 class sshserver(object): | 780 class sshserver(object): |
782 def __init__(self, ui, repo, logfh=None): | 781 def __init__(self, ui, repo, logfh=None): |
783 self._ui = ui | 782 self._ui = ui |
784 self._repo = repo | 783 self._repo = repo |
785 self._fin, self._fout = procutil.protectstdio(ui.fin, ui.fout) | 784 self._fin, self._fout = ui.protectfinout() |
786 # TODO: manage the redirection flag internally by ui | |
787 ui._finoutredirected = (self._fin, self._fout) != (ui.fin, ui.fout) | |
788 | 785 |
789 # Log write I/O to stdout and stderr if configured. | 786 # Log write I/O to stdout and stderr if configured. |
790 if logfh: | 787 if logfh: |
791 self._fout = util.makeloggingfileobject( | 788 self._fout = util.makeloggingfileobject( |
792 logfh, self._fout, 'o', logdata=True) | 789 logfh, self._fout, 'o', logdata=True) |
793 ui.ferr = util.makeloggingfileobject( | 790 ui.ferr = util.makeloggingfileobject( |
794 logfh, ui.ferr, 'e', logdata=True) | 791 logfh, ui.ferr, 'e', logdata=True) |
795 | 792 |
796 def serve_forever(self): | 793 def serve_forever(self): |
797 self.serveuntil(threading.Event()) | 794 self.serveuntil(threading.Event()) |
798 procutil.restorestdio(self._ui.fin, self._ui.fout, | 795 self._ui.restorefinout(self._fin, self._fout) |
799 self._fin, self._fout) | |
800 sys.exit(0) | 796 sys.exit(0) |
801 | 797 |
802 def serveuntil(self, ev): | 798 def serveuntil(self, ev): |
803 """Serve until a threading.Event is set.""" | 799 """Serve until a threading.Event is set.""" |
804 _runsshserver(self._ui, self._repo, self._fin, self._fout, ev) | 800 _runsshserver(self._ui, self._repo, self._fin, self._fout, ev) |