##// END OF EJS Templates
chgserver: rename private functions and variables of chgunixservicehandler...
Yuya Nishihara -
r29598:a6739872 default
parent child Browse files
Show More
@@ -542,8 +542,8 class chgunixservicehandler(object):
542
542
543 def __init__(self, ui):
543 def __init__(self, ui):
544 self.ui = ui
544 self.ui = ui
545 self.idletimeout = ui.configint('chgserver', 'idletimeout', 3600)
545 self._idletimeout = ui.configint('chgserver', 'idletimeout', 3600)
546 self.lastactive = time.time()
546 self._lastactive = time.time()
547
547
548 def bindsocket(self, sock, address):
548 def bindsocket(self, sock, address):
549 self._inithashstate(address)
549 self._inithashstate(address)
@@ -552,57 +552,57 class chgunixservicehandler(object):
552 self._createsymlink()
552 self._createsymlink()
553
553
554 def _inithashstate(self, address):
554 def _inithashstate(self, address):
555 self.baseaddress = address
555 self._baseaddress = address
556 if self.ui.configbool('chgserver', 'skiphash', False):
556 if self.ui.configbool('chgserver', 'skiphash', False):
557 self.hashstate = None
557 self._hashstate = None
558 self.address = address
558 self._realaddress = address
559 return
559 return
560 self.hashstate = hashstate.fromui(self.ui)
560 self._hashstate = hashstate.fromui(self.ui)
561 self.address = _hashaddress(address, self.hashstate.confighash)
561 self._realaddress = _hashaddress(address, self._hashstate.confighash)
562
562
563 def _checkextensions(self):
563 def _checkextensions(self):
564 if not self.hashstate:
564 if not self._hashstate:
565 return
565 return
566 if extensions.notloaded():
566 if extensions.notloaded():
567 # one or more extensions failed to load. mtimehash becomes
567 # one or more extensions failed to load. mtimehash becomes
568 # meaningless because we do not know the paths of those extensions.
568 # meaningless because we do not know the paths of those extensions.
569 # set mtimehash to an illegal hash value to invalidate the server.
569 # set mtimehash to an illegal hash value to invalidate the server.
570 self.hashstate.mtimehash = ''
570 self._hashstate.mtimehash = ''
571
571
572 def _bind(self, sock):
572 def _bind(self, sock):
573 # use a unique temp address so we can stat the file and do ownership
573 # use a unique temp address so we can stat the file and do ownership
574 # check later
574 # check later
575 tempaddress = _tempaddress(self.address)
575 tempaddress = _tempaddress(self._realaddress)
576 util.bindunixsocket(sock, tempaddress)
576 util.bindunixsocket(sock, tempaddress)
577 self._socketstat = os.stat(tempaddress)
577 self._socketstat = os.stat(tempaddress)
578 # rename will replace the old socket file if exists atomically. the
578 # rename will replace the old socket file if exists atomically. the
579 # old server will detect ownership change and exit.
579 # old server will detect ownership change and exit.
580 util.rename(tempaddress, self.address)
580 util.rename(tempaddress, self._realaddress)
581
581
582 def _createsymlink(self):
582 def _createsymlink(self):
583 if self.baseaddress == self.address:
583 if self._baseaddress == self._realaddress:
584 return
584 return
585 tempaddress = _tempaddress(self.baseaddress)
585 tempaddress = _tempaddress(self._baseaddress)
586 os.symlink(os.path.basename(self.address), tempaddress)
586 os.symlink(os.path.basename(self._realaddress), tempaddress)
587 util.rename(tempaddress, self.baseaddress)
587 util.rename(tempaddress, self._baseaddress)
588
588
589 def issocketowner(self):
589 def _issocketowner(self):
590 try:
590 try:
591 stat = os.stat(self.address)
591 stat = os.stat(self._realaddress)
592 return (stat.st_ino == self._socketstat.st_ino and
592 return (stat.st_ino == self._socketstat.st_ino and
593 stat.st_mtime == self._socketstat.st_mtime)
593 stat.st_mtime == self._socketstat.st_mtime)
594 except OSError:
594 except OSError:
595 return False
595 return False
596
596
597 def unlinksocket(self, address):
597 def unlinksocket(self, address):
598 if not self.issocketowner():
598 if not self._issocketowner():
599 return
599 return
600 # it is possible to have a race condition here that we may
600 # it is possible to have a race condition here that we may
601 # remove another server's socket file. but that's okay
601 # remove another server's socket file. but that's okay
602 # since that server will detect and exit automatically and
602 # since that server will detect and exit automatically and
603 # the client will start a new server on demand.
603 # the client will start a new server on demand.
604 try:
604 try:
605 os.unlink(self.address)
605 os.unlink(self._realaddress)
606 except OSError as exc:
606 except OSError as exc:
607 if exc.errno != errno.ENOENT:
607 if exc.errno != errno.ENOENT:
608 raise
608 raise
@@ -612,20 +612,20 class chgunixservicehandler(object):
612 pass
612 pass
613
613
614 def shouldexit(self):
614 def shouldexit(self):
615 if not self.issocketowner():
615 if not self._issocketowner():
616 self.ui.debug('%s is not owned, exiting.\n' % self.address)
616 self.ui.debug('%s is not owned, exiting.\n' % self._realaddress)
617 return True
617 return True
618 if time.time() - self.lastactive > self.idletimeout:
618 if time.time() - self._lastactive > self._idletimeout:
619 self.ui.debug('being idle too long. exiting.\n')
619 self.ui.debug('being idle too long. exiting.\n')
620 return True
620 return True
621 return False
621 return False
622
622
623 def newconnection(self):
623 def newconnection(self):
624 self.lastactive = time.time()
624 self._lastactive = time.time()
625
625
626 def createcmdserver(self, repo, conn, fin, fout):
626 def createcmdserver(self, repo, conn, fin, fout):
627 return chgcmdserver(self.ui, repo, fin, fout, conn,
627 return chgcmdserver(self.ui, repo, fin, fout, conn,
628 self.hashstate, self.baseaddress)
628 self._hashstate, self._baseaddress)
629
629
630 def chgunixservice(ui, repo, opts):
630 def chgunixservice(ui, repo, opts):
631 if repo:
631 if repo:
General Comments 0
You need to be logged in to leave comments. Login now