ACF $AcfVersion:0$
CTempFileManagerComp.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QMutex>
7
8// ACF includes
12
13
14namespace ifile
15{
16
17
22{
23public:
25
26 I_BEGIN_COMPONENT(CTempFileManagerComp);
27 I_REGISTER_INTERFACE(ITempFileManager);
28 I_ASSIGN(m_rootFolderCompPtr, "RootFolder", "Root folder used as a storage for temporary files", false, "RootFolder");
29 I_END_COMPONENT;
30
31 // reimplemented (ifile::ITempFileManager)
32 virtual QByteArray BeginSession(const QString& subPath = QString(), const QByteArray& proposedSessionId = QByteArray()) override;
33 virtual QByteArray AddFileItem(const QByteArray& sessionId, const QString& filePath, const QByteArray& proposedSessionId = QByteArray()) override;
34 virtual QString GetPath(const QByteArray& sessionId, const QByteArray& id) const override;
35 virtual bool RemoveFileItem(const QByteArray& sessionId, const QByteArray& id) override;
36 virtual void FinishSession(const QByteArray& sessionId) override;
37 virtual void ResetAllSessions() override;
38
39private:
40 I_REF(ifile::IFileNameParam, m_rootFolderCompPtr);
41
42 struct Item
43 {
44 QByteArray uuid;
45 QString path;
46 };
47 typedef QVector<Item> Items;
48
49 struct Session
50 {
51 QByteArray id;
52 QString basePath;
53
54 Items items;
55 };
56
57 typedef QMap<QByteArray, Session> SessionMap;
58 SessionMap m_sessionsMap;
59
60 mutable QMutex m_mutex;
61};
62
63
64} // namespace ifile
65
66
Base class for component implementation.
Component implementation of ITempFileManager interface.
virtual QByteArray AddFileItem(const QByteArray &sessionId, const QString &filePath, const QByteArray &proposedSessionId=QByteArray()) override
Add a new file to the session.
virtual bool RemoveFileItem(const QByteArray &sessionId, const QByteArray &id) override
Remove the file or folder given by its ID.
virtual void FinishSession(const QByteArray &sessionId) override
Finish the given session.
virtual void ResetAllSessions() override
Remove all running sessions.
virtual QByteArray BeginSession(const QString &subPath=QString(), const QByteArray &proposedSessionId=QByteArray()) override
Start a new session for managing temporary files.
virtual QString GetPath(const QByteArray &sessionId, const QByteArray &id) const override
Get the generated path of the file or folder by its ID.
icomp::CComponentBase BaseClass
Common interface for any file system item name (e.g directory, file or URL path)
Manager for working with the temporary files.
Contains interfaces and implementations of file system related components.