| casacore
    | 
#include <FileLocker.h>
| Public Types | |
| enum | LockType { Read , Write } | 
| Define the possible lock types.  More... | |
| Public Member Functions | |
| FileLocker () | |
| Default constructor creates an invalid fd. | |
| FileLocker (int fd, uInt start=0, uInt length=0) | |
| Construct the FileLocker object for the given file descriptor. | |
| ~FileLocker () | |
| Bool | acquire (LockType=Write, uInt nattempts=0) | 
| Acquire a write or read lock. | |
| Bool | release () | 
| Release a lock. | |
| Bool | canLock (LockType=Write) | 
| Test if the file can be locked for read or write. | |
| Bool | canLock (uInt &pid, LockType=Write) | 
| Bool | hasLock (LockType=Write) const | 
| Test if the process has a lock for read or write on the file. | |
| int | fd () const | 
| Get the fd in use. | |
| int | lastError () const | 
| Get the last error. | |
| String | lastMessage () const | 
| Get the message belonging to the last error. | |
| Private Attributes | |
| int | itsFD | 
| int | itsError | 
| int | itsStart | 
| int | itsLength | 
| Bool | itsMsgShown | 
| Bool | itsReadLocked | 
| temporary for SUSE 6.1 | |
| Bool | itsWriteLocked | 
 Class to handle file locking.
Public interface
This class handles file locking by means of the fcntl SETLK function. Locking of files on NFS-mounted file systems works correctly as long as the NFS lockd and statd deamons are configured correctly. Otherwise lock requests may be granted incorrectly.
Acquiring a lock can be done for a read or a write lock. Multiple locks on a file can exist as long as they are all read locks. When a write lock is involved, no other lock can exist. It is possible to acquire a lock in 2 ways:
Make it possible to lock files in a standard way.
Definition at line 89 of file FileLocker.h.
Define the possible lock types.
| Enumerator | |
|---|---|
| Read | Acquire a read lock. | 
| Write | Acquire a write lock. | 
Definition at line 93 of file FileLocker.h.
| casacore::FileLocker::FileLocker | ( | ) | 
Default constructor creates an invalid fd.
Construct the FileLocker object for the given file descriptor.
This can be used to lock a segment of the given file. The segment is given by start and length. Length=0 means till the end of the file.
| casacore::FileLocker::~FileLocker | ( | ) | 
Acquire a write or read lock.
nattempts defines how often it tries to acquire the lock. A zero value indicates an infinite number of times (i.e. wait until the lock is acquired). A positive value means it waits 1 second between each attempt. 
Test if the file can be locked for read or write.
Optionally the PID of the process holding the lock is returned.
Referenced by casacore::LockFile::canLock().
| 
 | inline | 
Test if the process has a lock for read or write on the file.
Definition at line 152 of file FileLocker.h.
References itsReadLocked, itsWriteLocked, and Write.
Referenced by casacore::LockFile::hasLock().
| 
 | inline | 
Get the last error.
Definition at line 160 of file FileLocker.h.
References itsError.
Referenced by casacore::LockFile::lastError().
| String casacore::FileLocker::lastMessage | ( | ) | const | 
Get the message belonging to the last error.
Referenced by casacore::LockFile::lastMessage().
| Bool casacore::FileLocker::release | ( | ) | 
Release a lock.
The return status indicates if an error occurred.
| 
 | private | 
Definition at line 143 of file FileLocker.h.
Referenced by lastError().
| 
 | private | 
Definition at line 142 of file FileLocker.h.
Referenced by fd().
| 
 | private | 
Definition at line 145 of file FileLocker.h.
| 
 | private | 
Definition at line 146 of file FileLocker.h.
| 
 | private | 
| 
 | private | 
Definition at line 144 of file FileLocker.h.
| 
 | private | 
Definition at line 148 of file FileLocker.h.
Referenced by hasLock().