Warning, file /utilities/okteta/kasten/gui/system/bytearrayviewprofilelock.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     This file is part of the Okteta Kasten module, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2011-2012 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "bytearrayviewprofilelock.hpp"
0010 
0011 // library
0012 #include <oktetakastengui.hpp>
0013 // Qt
0014 #include <QLockFile>
0015 #include <QSharedPointer>
0016 
0017 namespace Kasten {
0018 
0019 class ByteArrayViewProfileLockPrivate : public QSharedData
0020 {
0021 public:
0022     ByteArrayViewProfileLockPrivate(const QString& fileName,
0023                                     const ByteArrayViewProfile::Id& viewProfileId);
0024 
0025 public:
0026     QSharedPointer<QLockFile> lockFile;
0027     ByteArrayViewProfile::Id viewProfileId;
0028 };
0029 
0030 static QString
0031 viewProfileFileLockPath(const QString& viewProfileFilePath)
0032 {
0033     // TODO: just ".lock" conflicts with KConfig(?) using the same
0034     return viewProfileFilePath + QLatin1String(".olock");
0035 }
0036 
0037 ByteArrayViewProfileLockPrivate::ByteArrayViewProfileLockPrivate(const QString& fileName,
0038                                                                  const ByteArrayViewProfile::Id& id)
0039     : lockFile(new QLockFile(fileName.isEmpty() ? fileName : viewProfileFileLockPath(fileName)))
0040     , viewProfileId(id)
0041 {
0042     if (!fileName.isEmpty()) {
0043         if (!lockFile->tryLock(1000)) {
0044             qCWarning(LOG_KASTEN_OKTETA_GUI)
0045                 << "Failed to acquire lock file" << fileName
0046                 << "error =" << lockFile->error();
0047         }
0048     }
0049 }
0050 
0051 ByteArrayViewProfileLock::ByteArrayViewProfileLock(const QString& fileName,
0052                                                    const ByteArrayViewProfile::Id& viewProfileId)
0053     : d(new ByteArrayViewProfileLockPrivate(fileName, viewProfileId))
0054 {
0055 }
0056 
0057 ByteArrayViewProfileLock::ByteArrayViewProfileLock(const ByteArrayViewProfileLock& other) = default;
0058 
0059 ByteArrayViewProfileLock::~ByteArrayViewProfileLock() = default;
0060 
0061 ByteArrayViewProfileLock& ByteArrayViewProfileLock::operator=(const ByteArrayViewProfileLock& other) = default;
0062 
0063 void
0064 ByteArrayViewProfileLock::unlock()
0065 {
0066     d->lockFile->unlock();
0067 }
0068 
0069 bool
0070 ByteArrayViewProfileLock::isLocked() const
0071 {
0072     return d->lockFile->isLocked();
0073 }
0074 
0075 ByteArrayViewProfile::Id
0076 ByteArrayViewProfileLock::viewProfileId() const
0077 {
0078     return d->viewProfileId;
0079 }
0080 
0081 }