Mercurial > public > mercurial-scm > hg
comparison mercurial/commandserver.py @ 29512:538d0003c9e0
commandserver: promote .cleanup() hook from chgserver
This allows us to unify _requesthandler.handle().
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 21 May 2016 15:18:23 +0900 |
parents | 540c01a18bb7 |
children | e5b4d79a9140 |
comparison
equal
deleted
inserted
replaced
29511:540c01a18bb7 | 29512:538d0003c9e0 |
---|---|
176 self.cout = channeledoutput(fout, 'o') | 176 self.cout = channeledoutput(fout, 'o') |
177 self.cin = channeledinput(fin, fout, 'I') | 177 self.cin = channeledinput(fin, fout, 'I') |
178 self.cresult = channeledoutput(fout, 'r') | 178 self.cresult = channeledoutput(fout, 'r') |
179 | 179 |
180 self.client = fin | 180 self.client = fin |
181 | |
182 def cleanup(self): | |
183 """release and restore resources taken during server session""" | |
184 pass | |
181 | 185 |
182 def _read(self, size): | 186 def _read(self, size): |
183 if not size: | 187 if not size: |
184 return '' | 188 return '' |
185 | 189 |
327 fin, fout = _protectio(ui) | 331 fin, fout = _protectio(ui) |
328 try: | 332 try: |
329 sv = server(ui, self.repo, fin, fout) | 333 sv = server(ui, self.repo, fin, fout) |
330 return sv.serve() | 334 return sv.serve() |
331 finally: | 335 finally: |
336 sv.cleanup() | |
332 _restoreio(ui, fin, fout) | 337 _restoreio(ui, fin, fout) |
333 | 338 |
334 class _requesthandler(socketserver.StreamRequestHandler): | 339 class _requesthandler(socketserver.StreamRequestHandler): |
335 def handle(self): | 340 def handle(self): |
336 ui = self.server.ui | 341 ui = self.server.ui |
346 except IOError as inst: | 351 except IOError as inst: |
347 if inst.errno != errno.EPIPE: | 352 if inst.errno != errno.EPIPE: |
348 raise | 353 raise |
349 except KeyboardInterrupt: | 354 except KeyboardInterrupt: |
350 pass | 355 pass |
356 finally: | |
357 sv.cleanup() | |
351 except: # re-raises | 358 except: # re-raises |
352 # also write traceback to error channel. otherwise client cannot | 359 # also write traceback to error channel. otherwise client cannot |
353 # see it because it is written to server's stderr by default. | 360 # see it because it is written to server's stderr by default. |
354 if sv: | 361 if sv: |
355 cerr = sv.cerr | 362 cerr = sv.cerr |