Add std::chrono overloads for QLockFile functions
This makes it convenient to use QLockFile for projects which are able to use std::chrono to denote durations. Change-Id: Ib4520f6142412bdefe659fccc1e6d15b81af2f25 Reviewed-by: David Faure <david.faure@kdab.com>
This commit is contained in:
parent
b3281eb6f4
commit
0592123a0c
@ -180,6 +180,26 @@ void QLockFile::setStaleLockTime(int staleLockTime)
|
|||||||
d->staleLockTime = staleLockTime;
|
d->staleLockTime = staleLockTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! \fn void QLockFile::setStaleLockTime(std::chrono::milliseconds value)
|
||||||
|
\overload
|
||||||
|
\since 6.2
|
||||||
|
|
||||||
|
Sets \a staleLockTime to be an interval after which a lock file is considered
|
||||||
|
stale.
|
||||||
|
The default value is 30 seconds.
|
||||||
|
If your application typically keeps the file locked for more than 30 seconds
|
||||||
|
(for instance while saving megabytes of data for 2 minutes), you should set
|
||||||
|
a bigger value using setStaleLockTime().
|
||||||
|
|
||||||
|
The value of \a staleLockTime is used by lock() and tryLock() in order
|
||||||
|
to determine when an existing lock file is considered stale, i.e. left over
|
||||||
|
by a crashed process. This is useful for the case where the PID got reused
|
||||||
|
meanwhile, so one way to detect a stale lock file is by the fact that
|
||||||
|
it has been around for a long time.
|
||||||
|
|
||||||
|
\sa staleLockTime()
|
||||||
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the time in milliseconds after which
|
Returns the time in milliseconds after which
|
||||||
a lock file is considered stale.
|
a lock file is considered stale.
|
||||||
@ -192,6 +212,16 @@ int QLockFile::staleLockTime() const
|
|||||||
return d->staleLockTime;
|
return d->staleLockTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! \fn std::chrono::milliseconds staleLockTimeAsDuration() const
|
||||||
|
\overload
|
||||||
|
\since 6.2
|
||||||
|
|
||||||
|
Returns a std::chrono::milliseconds object which denotes the time after
|
||||||
|
which a lock file is considered stale.
|
||||||
|
|
||||||
|
\sa setStaleLockTime()
|
||||||
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if the lock was acquired by this QLockFile instance,
|
Returns \c true if the lock was acquired by this QLockFile instance,
|
||||||
otherwise returns \c false.
|
otherwise returns \c false.
|
||||||
@ -287,6 +317,25 @@ bool QLockFile::tryLock(int timeout)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! \fn bool QLockFile::tryLock(std::chrono::milliseconds timeout)
|
||||||
|
\overload
|
||||||
|
\since 6.2
|
||||||
|
|
||||||
|
Attempts to create the lock file. This function returns \c true if the
|
||||||
|
lock was obtained; otherwise it returns \c false. If another process (or
|
||||||
|
another thread) has created the lock file already, this function will
|
||||||
|
wait for at most \a timeout for the lock file to become available.
|
||||||
|
|
||||||
|
If the lock was obtained, it must be released with unlock()
|
||||||
|
before another process (or thread) can successfully lock it.
|
||||||
|
|
||||||
|
Calling this function multiple times on the same lock from the same
|
||||||
|
thread without unlocking first is not allowed, this function will
|
||||||
|
\e always return false when attempting to lock the file recursively.
|
||||||
|
|
||||||
|
\sa lock(), unlock()
|
||||||
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void QLockFile::unlock()
|
\fn void QLockFile::unlock()
|
||||||
Releases the lock, by deleting the lock file.
|
Releases the lock, by deleting the lock file.
|
||||||
|
@ -43,6 +43,10 @@
|
|||||||
#include <QtCore/qstring.h>
|
#include <QtCore/qstring.h>
|
||||||
#include <QtCore/qscopedpointer.h>
|
#include <QtCore/qscopedpointer.h>
|
||||||
|
|
||||||
|
#if __has_include(<chrono>)
|
||||||
|
# include <chrono>
|
||||||
|
#endif
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
class QLockFilePrivate;
|
class QLockFilePrivate;
|
||||||
@ -62,6 +66,17 @@ public:
|
|||||||
void setStaleLockTime(int);
|
void setStaleLockTime(int);
|
||||||
int staleLockTime() const;
|
int staleLockTime() const;
|
||||||
|
|
||||||
|
#if __has_include(<chrono>)
|
||||||
|
bool tryLock(std::chrono::milliseconds timeout) { return tryLock(int(timeout.count())); }
|
||||||
|
|
||||||
|
void setStaleLockTime(std::chrono::milliseconds value) { setStaleLockTime(int(value.count())); }
|
||||||
|
|
||||||
|
std::chrono::milliseconds staleLockTimeAsDuration() const
|
||||||
|
{
|
||||||
|
return std::chrono::milliseconds(staleLockTime());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bool isLocked() const;
|
bool isLocked() const;
|
||||||
bool getLockInfo(qint64 *pid, QString *hostname, QString *appname) const;
|
bool getLockInfo(qint64 *pid, QString *hostname, QString *appname) const;
|
||||||
bool removeStaleLockFile();
|
bool removeStaleLockFile();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user