LockFile.h 558 B

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * Copyright (c) 2021, Peter Elliott <pelliott@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. namespace Core {
  8. class LockFile {
  9. public:
  10. enum class Type {
  11. Exclusive,
  12. Shared
  13. };
  14. LockFile(LockFile const& other) = delete;
  15. LockFile(char const* filename, Type type = Type::Exclusive);
  16. ~LockFile();
  17. bool is_held() const;
  18. int error_code() const { return m_errno; }
  19. void release();
  20. private:
  21. int m_fd { -1 };
  22. int m_errno { 0 };
  23. char const* m_filename { nullptr };
  24. };
  25. }