diff options
Diffstat (limited to 'libpod/lock/lock.go')
-rw-r--r-- | libpod/lock/lock.go | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/libpod/lock/lock.go b/libpod/lock/lock.go deleted file mode 100644 index 73c1fdcf7..000000000 --- a/libpod/lock/lock.go +++ /dev/null @@ -1,58 +0,0 @@ -package lock - -// Manager provides an interface for allocating multiprocess locks. -// Locks returned by Manager MUST be multiprocess - allocating a lock in -// process A and retrieving that lock's ID in process B must return handles for -// the same lock, and locking the lock in A should exclude B from the lock until -// it is unlocked in A. -// All locks must be identified by a UUID (retrieved with Locker's ID() method). -// All locks with a given UUID must refer to the same underlying lock, and it -// must be possible to retrieve the lock given its UUID. -// Each UUID should refer to a unique underlying lock. -// Calls to AllocateLock() must return a unique, unallocated UUID. -// AllocateLock() must fail once all available locks have been allocated. -// Locks are returned to use by calls to Free(), and can subsequently be -// reallocated. -type Manager interface { - // AllocateLock returns an unallocated lock. - // It is guaranteed that the same lock will not be returned again by - // AllocateLock until the returned lock has Free() called on it. - // If all available locks are allocated, AllocateLock will return an - // error. - AllocateLock() (Locker, error) - // RetrieveLock retrieves a lock given its UUID. - // The underlying lock MUST be the same as another other lock with the - // same UUID. - RetrieveLock(id uint32) (Locker, error) -} - -// Locker is similar to sync.Locker, but provides a method for freeing the lock -// to allow its reuse. -// All Locker implementations must maintain mutex semantics - the lock only -// allows one caller in the critical section at a time. -// All locks with the same ID must refer to the same underlying lock, even -// if they are within multiple processes. -type Locker interface { - // ID retrieves the lock's ID. - // ID is guaranteed to uniquely identify the lock within the - // Manager - that is, calling RetrieveLock with this ID will return - // another instance of the same lock. - ID() uint32 - // Lock locks the lock. - // This call MUST block until it successfully acquires the lock or - // encounters a fatal error. - // All errors must be handled internally, as they are not returned. For - // the most part, panicking should be appropriate. - Lock() - // Unlock unlocks the lock. - // All errors must be handled internally, as they are not returned. For - // the most part, panicking should be appropriate. - // This includes unlocking locks which are already unlocked. - Unlock() - // Free deallocates the underlying lock, allowing its reuse by other - // pods and containers. - // The lock MUST still be usable after a Free() - some libpod instances - // may still retain Container structs with the old lock. This simply - // advises the manager that the lock may be reallocated. - Free() error -} |