2016-09-27 19:01:08 +00:00
|
|
|
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
2014-11-25 22:49:25 +00:00
|
|
|
#ifndef cmFileLockResult_h
|
|
|
|
#define cmFileLockResult_h
|
|
|
|
|
2016-09-01 18:59:28 +00:00
|
|
|
#include <cmConfigure.h> // IWYU pragma: keep
|
2016-09-01 18:05:48 +00:00
|
|
|
|
2016-09-01 18:59:28 +00:00
|
|
|
#include <string>
|
2014-11-25 22:49:25 +00:00
|
|
|
|
|
|
|
#if defined(_WIN32)
|
2016-05-16 14:34:04 +00:00
|
|
|
#include <windows.h> // DWORD
|
2014-11-25 22:49:25 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Result of the locking/unlocking file.
|
|
|
|
* @note See @c cmFileLock
|
|
|
|
*/
|
|
|
|
class cmFileLockResult
|
|
|
|
{
|
2016-05-16 14:34:04 +00:00
|
|
|
public:
|
2014-11-25 22:49:25 +00:00
|
|
|
#if defined(_WIN32)
|
|
|
|
typedef DWORD Error;
|
|
|
|
#else
|
|
|
|
typedef int Error;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Successful lock/unlock.
|
|
|
|
*/
|
|
|
|
static cmFileLockResult MakeOk();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Lock/Unlock failed. Read error/GetLastError.
|
|
|
|
*/
|
|
|
|
static cmFileLockResult MakeSystem();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Lock/Unlock failed. Timeout reached.
|
|
|
|
*/
|
|
|
|
static cmFileLockResult MakeTimeout();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief File already locked.
|
|
|
|
*/
|
|
|
|
static cmFileLockResult MakeAlreadyLocked();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Internal error.
|
|
|
|
*/
|
|
|
|
static cmFileLockResult MakeInternal();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Try to lock with function guard outside of the function
|
|
|
|
*/
|
|
|
|
static cmFileLockResult MakeNoFunction();
|
|
|
|
|
|
|
|
bool IsOk() const;
|
|
|
|
std::string GetOutputMessage() const;
|
|
|
|
|
2016-05-16 14:34:04 +00:00
|
|
|
private:
|
2014-11-25 22:49:25 +00:00
|
|
|
enum ErrorType
|
|
|
|
{
|
|
|
|
OK,
|
|
|
|
SYSTEM,
|
|
|
|
TIMEOUT,
|
|
|
|
ALREADY_LOCKED,
|
|
|
|
INTERNAL,
|
|
|
|
NO_FUNCTION
|
|
|
|
};
|
|
|
|
|
|
|
|
cmFileLockResult(ErrorType type, Error errorValue);
|
|
|
|
|
|
|
|
ErrorType Type;
|
|
|
|
Error ErrorValue;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // cmFileLockResult_h
|