namespace CCL::LockFile

namespace LockFile {

// global variables

static const CString kAppName = "application";
static const CString kExecutablePath = "executablepath";

// global functions

bool readLockFile (
    String& executablePath,
    String& applicationName,
    UrlRef filePath
);

bool writeLockFile (
    UrlRef filePath,
    StringRef executablePath,
    StringRef applicationName
);

bool lockDirectory (UrlRef path, StringRef applicationName = nullptr);
bool unlockDirectory (UrlRef path);
bool isDirectoryLocked (UrlRef path);
void getLockingApplicationNames (StringList& applicationNames, UrlRef path);
const FileType& getLockFileType ();

} // namespace LockFile