~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lock.py

Merge landed readdir acceleration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
42
42
    osutils,
43
43
    trace,
44
44
    )
 
45
from bzrlib.hooks import Hooks
 
46
 
 
47
 
 
48
class LockHooks(Hooks):
 
49
 
 
50
    def __init__(self):
 
51
        Hooks.__init__(self)
 
52
 
 
53
        # added in 1.8; called with a LockResult when a physical lock is
 
54
        # acquired
 
55
        self['lock_acquired'] = []
 
56
 
 
57
        # added in 1.8; called with a LockResult when a physical lock is
 
58
        # acquired
 
59
        self['lock_released'] = []
 
60
 
 
61
 
 
62
class Lock(object):
 
63
    """Base class for locks.
 
64
 
 
65
    :cvar hooks: Hook dictionary for operations on locks.
 
66
    """
 
67
 
 
68
    hooks = LockHooks()
 
69
 
 
70
 
 
71
class LockResult(object):
 
72
    """Result of an operation on a lock; passed to a hook"""
 
73
 
 
74
    def __init__(self, lock_url, details=None):
 
75
        """Create a lock result for lock with optional details about the lock."""
 
76
        self.lock_url = lock_url
 
77
        self.details = details
 
78
 
 
79
    def __eq__(self, other):
 
80
        return self.lock_url == other.lock_url and self.details == other.details
45
81
 
46
82
 
47
83
class _OSLock(object):