comparison mercurial/commandserver.py @ 29433:33770d2b6cf9

py3: conditionalize SocketServer import The SocketServer is renamed to socketserver in python 3
author Pulkit Goyal <7895pulkit@gmail.com>
date Mon, 27 Jun 2016 16:48:54 +0530
parents d269e7db2f55
children 540c01a18bb7
comparison
equal deleted inserted replaced
29432:34b914ac573e 29433:33770d2b6cf9
5 # This software may be used and distributed according to the terms of the 5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version. 6 # GNU General Public License version 2 or any later version.
7 7
8 from __future__ import absolute_import 8 from __future__ import absolute_import
9 9
10 import SocketServer
11 import errno 10 import errno
12 import os 11 import os
13 import struct 12 import struct
14 import sys 13 import sys
15 import traceback 14 import traceback
18 from . import ( 17 from . import (
19 encoding, 18 encoding,
20 error, 19 error,
21 util, 20 util,
22 ) 21 )
22
23 socketserver = util.socketserver
23 24
24 logfile = None 25 logfile = None
25 26
26 def log(*args): 27 def log(*args):
27 if not logfile: 28 if not logfile:
328 sv = server(ui, self.repo, fin, fout) 329 sv = server(ui, self.repo, fin, fout)
329 return sv.serve() 330 return sv.serve()
330 finally: 331 finally:
331 _restoreio(ui, fin, fout) 332 _restoreio(ui, fin, fout)
332 333
333 class _requesthandler(SocketServer.StreamRequestHandler): 334 class _requesthandler(socketserver.StreamRequestHandler):
334 def handle(self): 335 def handle(self):
335 ui = self.server.ui 336 ui = self.server.ui
336 repo = self.server.repo 337 repo = self.server.repo
337 sv = None 338 sv = None
338 try: 339 try:
364 """ 365 """
365 def __init__(self, ui, repo, opts): 366 def __init__(self, ui, repo, opts):
366 self.ui = ui 367 self.ui = ui
367 self.repo = repo 368 self.repo = repo
368 self.address = opts['address'] 369 self.address = opts['address']
369 if not util.safehasattr(SocketServer, 'UnixStreamServer'): 370 if not util.safehasattr(socketserver, 'UnixStreamServer'):
370 raise error.Abort(_('unsupported platform')) 371 raise error.Abort(_('unsupported platform'))
371 if not self.address: 372 if not self.address:
372 raise error.Abort(_('no socket path specified with --address')) 373 raise error.Abort(_('no socket path specified with --address'))
373 374
374 def init(self): 375 def init(self):
375 class cls(SocketServer.ForkingMixIn, SocketServer.UnixStreamServer): 376 class cls(socketserver.ForkingMixIn, socketserver.UnixStreamServer):
376 ui = self.ui 377 ui = self.ui
377 repo = self.repo 378 repo = self.repo
378 self.server = cls(self.address, _requesthandler) 379 self.server = cls(self.address, _requesthandler)
379 self.ui.status(_('listening at %s\n') % self.address) 380 self.ui.status(_('listening at %s\n') % self.address)
380 self.ui.flush() # avoid buffering of status message 381 self.ui.flush() # avoid buffering of status message