Serenity Operating System
at master 32 lines 558 B view raw
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}