Rev 2364: Code cleanup in http://bzr.arbash-meinel.com/branches/bzr/0.15-dev/lock_cleanup
John Arbash Meinel
john at arbash-meinel.com
Wed Mar 14 20:57:15 GMT 2007
At http://bzr.arbash-meinel.com/branches/bzr/0.15-dev/lock_cleanup
------------------------------------------------------------
revno: 2364
revision-id: john at arbash-meinel.com-20070314205703-taih3n87g9n4afdv
parent: john at arbash-meinel.com-20070314204717-htynwogv97fqr22a
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: lock_cleanup
timestamp: Wed 2007-03-14 15:57:03 -0500
message:
Code cleanup
modified:
bzrlib/lock.py lock.py-20050527050856-ec090bb51bc03349
-------------- next part --------------
=== modified file 'bzrlib/lock.py'
--- a/bzrlib/lock.py 2007-03-14 20:47:17 +0000
+++ b/bzrlib/lock.py 2007-03-14 20:57:03 +0000
@@ -35,13 +35,12 @@
"""
import errno
-import os
-import sys
-from bzrlib import errors
-from bzrlib.errors import LockError, LockContention
-from bzrlib.osutils import realpath
-from bzrlib.trace import mutter
+from bzrlib import (
+ errors,
+ osutils,
+ trace,
+ )
class _base_Lock(object):
@@ -51,7 +50,7 @@
self.filename = None
def _open(self, filename, filemode):
- self.filename = realpath(filename)
+ self.filename = osutils.realpath(filename)
try:
self.f = open(self.filename, filemode)
return self.f
@@ -62,7 +61,7 @@
raise
# maybe this is an old branch (before may 2005)
- mutter("trying to create missing lock %r", self.filename)
+ trace.mutter("trying to create missing lock %r", self.filename)
self.f = open(self.filename, 'wb+')
return self.f
@@ -83,7 +82,6 @@
raise NotImplementedError()
-have_ctypes = have_pywin32 = have_fcntl = False
try:
import fcntl
have_fcntl = True
@@ -127,7 +125,7 @@
self._open(filename, 'rb+')
if self.filename in self.open_locks:
self._clear_f()
- raise LockContention(self.filename)
+ raise errors.LockContention(self.filename)
# reserve a slot for this lock - even if the lockf call fails,
# at thisi point unlock() will be called, because self.f is set.
# TODO: make this fully threadsafe, if we decide we care.
@@ -142,7 +140,7 @@
self.unlock()
# we should be more precise about whats a locking
# error and whats a random-other error
- raise LockError(e)
+ raise errors.LockError(e)
def unlock(self):
del self.open_locks[self.filename]
@@ -163,7 +161,7 @@
except IOError, e:
# we should be more precise about whats a locking
# error and whats a random-other error
- raise LockError(e)
+ raise errors.LockError(e)
def unlock(self):
self._unlock()
@@ -171,6 +169,7 @@
_lock_classes.append(('fcntl', _fcntl_WriteLock, _fcntl_ReadLock))
+
if have_pywin32:
LOCK_SH = 0 # the default
LOCK_EX = win32con.LOCKFILE_EXCLUSIVE_LOCK
@@ -195,7 +194,7 @@
raise
except Exception, e:
self._clear_f()
- raise LockError(e)
+ raise errors.LockError(e)
def unlock(self):
overlapped = pywintypes.OVERLAPPED()
@@ -203,7 +202,7 @@
win32file.UnlockFileEx(self.hfile, 0, 0x7fff0000, overlapped)
self._clear_f()
except Exception, e:
- raise LockError(e)
+ raise errors.LockError(e)
class _w32c_ReadLock(_w32c_FileLock):
@@ -211,13 +210,16 @@
super(_w32c_ReadLock, self).__init__()
self._lock(filename, 'rb', LOCK_SH + LOCK_NB)
+
class _w32c_WriteLock(_w32c_FileLock):
def __init__(self, filename):
super(_w32c_WriteLock, self).__init__()
self._lock(filename, 'rb+', LOCK_EX + LOCK_NB)
+
_lock_classes.append(('pywin32', _w32c_WriteLock, _w32c_ReadLock))
+
if have_ctypes:
# These constants were copied from the win32con.py module.
LOCKFILE_FAIL_IMMEDIATELY = 1
@@ -309,20 +311,22 @@
super(_ctypes_ReadLock, self).__init__()
self._lock(filename, 'rb', LOCK_SH + LOCK_NB)
+
class _ctypes_WriteLock(_ctypes_FileLock):
def __init__(self, filename):
super(_ctypes_WriteLock, self).__init__()
self._lock(filename, 'rb+', LOCK_EX + LOCK_NB)
+
_lock_classes.append(('ctypes', _ctypes_WriteLock, _ctypes_ReadLock))
if len(_lock_classes) == 0:
- raise NotImplementedError("We only have support for"
- " fcntl, pywin32 or ctypes locking."
- " If your platform (windows) does not"
- " support fcntl locks, you must have"
- " either pywin32 or ctypes installed.")
+ raise NotImplementedError(
+ "We must have one of fcntl, pywin32, or ctypes available"
+ " to support OS locking."
+ )
+
# We default to using the first available lock class.
_lock_type, WriteLock, ReadLock = _lock_classes[0]
More information about the bazaar-commits
mailing list