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