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
|
|
|
|
|
2017-04-11 20:00:21 +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)
|
2018-06-01 13:53:41 +00:00
|
|
|
# include <windows.h> // DWORD
|
2014-11-25 22:49:25 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
2018-06-01 13:53:41 +00:00
|
|
|
* @brief Result of the locking/unlocking file.
|
|
|
|
* @note See @c cmFileLock
|
|
|
|
*/
|
2014-11-25 22:49:25 +00:00
|
|
|
class cmFileLockResult
|
|
|
|
{
|
2016-05-16 14:34:04 +00:00
|
|
|
public:
|
2014-11-25 22:49:25 +00:00
|
|
|
#if defined(_WIN32)
|
2019-09-04 16:03:01 +00:00
|
|
|
using Error = DWORD;
|
2014-11-25 22:49:25 +00:00
|
|
|
#else
|
2019-08-23 21:25:56 +00:00
|
|
|
using Error = int;
|
2014-11-25 22:49:25 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
2018-06-01 13:53:41 +00:00
|
|
|
* @brief Successful lock/unlock.
|
|
|
|
*/
|
2014-11-25 22:49:25 +00:00
|
|
|
static cmFileLockResult MakeOk();
|
|
|
|
|
|
|
|
/**
|
2018-06-01 13:53:41 +00:00
|
|
|
* @brief Lock/Unlock failed. Read error/GetLastError.
|
|
|
|
*/
|
2014-11-25 22:49:25 +00:00
|
|
|
static cmFileLockResult MakeSystem();
|
|
|
|
|
|
|
|
/**
|
2018-06-01 13:53:41 +00:00
|
|
|
* @brief Lock/Unlock failed. Timeout reached.
|
|
|
|
*/
|
2014-11-25 22:49:25 +00:00
|
|
|
static cmFileLockResult MakeTimeout();
|
|
|
|
|
|
|
|
/**
|
2018-06-01 13:53:41 +00:00
|
|
|
* @brief File already locked.
|
|
|
|
*/
|
2014-11-25 22:49:25 +00:00
|
|
|
static cmFileLockResult MakeAlreadyLocked();
|
|
|
|
|
|
|
|
/**
|
2018-06-01 13:53:41 +00:00
|
|
|
* @brief Internal error.
|
|
|
|
*/
|
2014-11-25 22:49:25 +00:00
|
|
|
static cmFileLockResult MakeInternal();
|
|
|
|
|
|
|
|
/**
|
2018-06-01 13:53:41 +00:00
|
|
|
* @brief Try to lock with function guard outside of the function
|
|
|
|
*/
|
2014-11-25 22:49:25 +00:00
|
|
|
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
|