summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/svl/documentlockfile.hxx12
-rw-r--r--include/svl/lockfilecommon.hxx4
-rw-r--r--include/svl/msodocumentlockfile.hxx9
-rw-r--r--include/svl/sharecontrolfile.hxx5
4 files changed, 18 insertions, 12 deletions
diff --git a/include/svl/documentlockfile.hxx b/include/svl/documentlockfile.hxx
index b4f731db7fc8..d5dee52561cb 100644
--- a/include/svl/documentlockfile.hxx
+++ b/include/svl/documentlockfile.hxx
@@ -43,23 +43,25 @@ public:
/// Only delete lockfile, disregarding ownership
void RemoveFileDirectly();
- virtual LockFileEntry GetLockData() = 0;
+ LockFileEntry GetLockData();
protected:
- virtual void WriteEntryToStream( const LockFileEntry& aEntry, const css::uno::Reference< css::io::XOutputStream >& xStream ) = 0;
- virtual css::uno::Reference< css::io::XInputStream > OpenStream();
+ virtual LockFileEntry GetLockDataImpl(std::unique_lock<std::mutex>& rGuard) = 0;
+ virtual void WriteEntryToStream( std::unique_lock<std::mutex>& rGuard, const LockFileEntry& aEntry, const css::uno::Reference< css::io::XOutputStream >& xStream ) = 0;
+ virtual css::uno::Reference< css::io::XInputStream > OpenStream(std::unique_lock<std::mutex>& rGuard);
};
/// Class implementing reading and writing LO lockfiles.
class SVL_DLLPUBLIC DocumentLockFile final : public GenDocumentLockFile
{
- virtual void WriteEntryToStream( const LockFileEntry& aEntry, const css::uno::Reference< css::io::XOutputStream >& xStream ) override;
+ virtual void WriteEntryToStream( std::unique_lock<std::mutex>& rGuard, const LockFileEntry& aEntry, const css::uno::Reference< css::io::XOutputStream >& xStream ) override;
public:
DocumentLockFile( std::u16string_view aOrigURL );
virtual ~DocumentLockFile() override;
- virtual LockFileEntry GetLockData() override;
+protected:
+ virtual LockFileEntry GetLockDataImpl(std::unique_lock<std::mutex>& rGuard) override;
};
}
diff --git a/include/svl/lockfilecommon.hxx b/include/svl/lockfilecommon.hxx
index d71cb8262e92..6a19681b6f7a 100644
--- a/include/svl/lockfilecommon.hxx
+++ b/include/svl/lockfilecommon.hxx
@@ -24,10 +24,10 @@
#include <com/sun/star/uno/Sequence.hxx>
-#include <osl/mutex.hxx>
#include <tools/urlobj.hxx>
#include <o3tl/enumarray.hxx>
+#include <mutex>
#include <string_view>
#include <vector>
@@ -47,7 +47,7 @@ private:
OUString m_aURL;
protected:
- ::osl::Mutex m_aMutex;
+ std::mutex m_aMutex;
/// This method generates the URL of the lock file based on the document URL and the specified prefix.
static OUString GenerateOwnLockFileURL(std::u16string_view aOrigURL, std::u16string_view aPrefix);
diff --git a/include/svl/msodocumentlockfile.hxx b/include/svl/msodocumentlockfile.hxx
index f91c7ccffe44..282f427b32aa 100644
--- a/include/svl/msodocumentlockfile.hxx
+++ b/include/svl/msodocumentlockfile.hxx
@@ -33,17 +33,18 @@ private:
AppType m_eAppType;
virtual void
- WriteEntryToStream(const LockFileEntry& aEntry,
+ WriteEntryToStream(std::unique_lock<std::mutex>& rGuard, const LockFileEntry& aEntry,
const css::uno::Reference<css::io::XOutputStream>& xStream) override;
- virtual css::uno::Reference<css::io::XInputStream> OpenStream() override;
+ virtual css::uno::Reference<css::io::XInputStream>
+ OpenStream(std::unique_lock<std::mutex>& rGuard) override;
+
+ virtual LockFileEntry GetLockDataImpl(std::unique_lock<std::mutex>& rGuard) override;
public:
MSODocumentLockFile(std::u16string_view aOrigURL);
virtual ~MSODocumentLockFile() override;
- virtual LockFileEntry GetLockData() override;
-
virtual void RemoveFile() override;
static bool IsMSOSupportedFileFormat(std::u16string_view aURL);
diff --git a/include/svl/sharecontrolfile.hxx b/include/svl/sharecontrolfile.hxx
index fe717131262b..a7b9ac1db297 100644
--- a/include/svl/sharecontrolfile.hxx
+++ b/include/svl/sharecontrolfile.hxx
@@ -56,12 +56,15 @@ public:
virtual ~ShareControlFile() override;
std::vector< LockFileEntry > GetUsersData();
- void SetUsersDataAndStore( std::vector< LockFileEntry >&& aUserNames );
+ void SetUsersDataAndStore( std::unique_lock<std::mutex>& rGuard, std::vector< LockFileEntry >&& aUserNames );
LockFileEntry InsertOwnEntry();
bool HasOwnEntry();
void RemoveEntry( const LockFileEntry& aOptionalSpecification );
void RemoveEntry();
void RemoveFile();
+private:
+ void RemoveFileImpl(std::unique_lock<std::mutex>& rGuard);
+ std::vector< LockFileEntry > GetUsersDataImpl(std::unique_lock<std::mutex>& rGuard);
};
}