mercurial/lock.py
changeset 20380 c697b70f295f
parent 20091 abfe6a8e619b
child 23032 f484be02bd35
equal deleted inserted replaced
20379:b75a04502ced 20380:c697b70f295f
    36         self.timeout = timeout
    36         self.timeout = timeout
    37         self.releasefn = releasefn
    37         self.releasefn = releasefn
    38         self.desc = desc
    38         self.desc = desc
    39         self.postrelease  = []
    39         self.postrelease  = []
    40         self.pid = os.getpid()
    40         self.pid = os.getpid()
    41         self.lock()
    41         self.delay = self.lock()
    42 
    42 
    43     def __del__(self):
    43     def __del__(self):
    44         if self.held:
    44         if self.held:
    45             warnings.warn("use lock.release instead of del lock",
    45             warnings.warn("use lock.release instead of del lock",
    46                     category=DeprecationWarning,
    46                     category=DeprecationWarning,
    55     def lock(self):
    55     def lock(self):
    56         timeout = self.timeout
    56         timeout = self.timeout
    57         while True:
    57         while True:
    58             try:
    58             try:
    59                 self.trylock()
    59                 self.trylock()
    60                 return 1
    60                 return self.timeout - timeout
    61             except error.LockHeld, inst:
    61             except error.LockHeld, inst:
    62                 if timeout != 0:
    62                 if timeout != 0:
    63                     time.sleep(1)
    63                     time.sleep(1)
    64                     if timeout > 0:
    64                     if timeout > 0:
    65                         timeout -= 1
    65                         timeout -= 1