| 1234567891011121314151617181920212223242526272829303132333435363738 |
- // This file is part of Desktop App Toolkit,
- // a set of libraries for developing nice desktop applications.
- //
- // For license and copyright information please follow this link:
- // https://github.com/desktop-app/legal/blob/master/LEGAL
- //
- #pragma once
- #include "base/basic_types.h"
- #include <QtCore/QFile>
- namespace base {
- class FileLock {
- public:
- FileLock();
- bool lock(QFile &file, QIODevice::OpenMode mode);
- [[nodiscard]] bool locked() const;
- void unlock();
- static constexpr auto kSkipBytes = size_type(4);
- ~FileLock();
- private:
- class Lock;
- struct Descriptor;
- struct LockingPid;
- static constexpr auto kLockOffset = index_type(0);
- static constexpr auto kLockLimit = kSkipBytes;
- std::unique_ptr<Lock> _lock;
- };
- } // namespace base
|