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