1 //===-- LockFileBase.cpp ----------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Host/LockFileBase.h"
13 using namespace lldb_private;
21 return Error ("Already locked");
27 return Error ("Not locked");
32 LockFileBase::LockFileBase (int fd) :
42 LockFileBase::IsLocked () const
48 LockFileBase::WriteLock (const uint64_t start, const uint64_t len)
50 return DoLock ([&] (const uint64_t start, const uint64_t len)
52 return DoWriteLock (start, len);
57 LockFileBase::TryWriteLock (const uint64_t start, const uint64_t len)
59 return DoLock ([&] (const uint64_t start, const uint64_t len)
61 return DoTryWriteLock (start, len);
66 LockFileBase::ReadLock (const uint64_t start, const uint64_t len)
68 return DoLock ([&] (const uint64_t start, const uint64_t len)
70 return DoReadLock (start, len);
75 LockFileBase::TryReadLock (const uint64_t start, const uint64_t len)
77 return DoLock ([&] (const uint64_t start, const uint64_t len)
79 return DoTryReadLock (start, len);
85 LockFileBase::Unlock ()
90 const auto error = DoUnlock ();
101 LockFileBase::IsValidFile () const
107 LockFileBase::DoLock (const Locker &locker, const uint64_t start, const uint64_t len)
110 return Error("File is invalid");
113 return AlreadyLocked ();
115 const auto error = locker (start, len);
116 if (error.Success ())