Files
frelay/Struct/InfoDirFile.h

62 lines
1.4 KiB
C
Raw Normal View History

2025-06-15 14:31:54 +08:00
#ifndef INFO_DIR_FILE_H
#define INFO_DIR_FILE_H
#include <QBuffer>
#include <QDataStream>
#include <QIODevice>
#include <QString>
#include <QVector>
enum FileType : uint32_t { None = 0, File, Dir, Link, Other };
struct DirFileInfo {
QString name;
quint64 size{};
FileType type = None;
QString fullPath;
quint16 permission{};
quint64 lastModified{};
void serialize(QDataStream& data) const
{
uint32_t t = static_cast<FileType>(type);
data << name << size << t << fullPath << permission << lastModified;
2025-06-15 14:31:54 +08:00
}
void deserialize(QDataStream& data)
{
uint32_t t = 0;
data >> name >> size >> t >> fullPath >> permission >> lastModified;
type = static_cast<FileType>(t);
2025-06-15 14:31:54 +08:00
}
};
QDataStream& operator<<(QDataStream& data, const DirFileInfo& info);
QDataStream& operator>>(QDataStream& data, DirFileInfo& info);
struct DirFileInfoVec {
QVector<DirFileInfo> vec;
2025-06-15 23:13:30 +08:00
QString root;
2025-06-15 14:31:54 +08:00
void serialize(QDataStream& data) const
{
uint32_t size = static_cast<uint32_t>(vec.size());
data << size;
2025-06-15 14:31:54 +08:00
for (const auto& info : vec) {
data << info;
}
2025-06-15 23:13:30 +08:00
data << root;
2025-06-15 14:31:54 +08:00
}
void deserialize(QDataStream& data)
{
uint32_t size = 0;
2025-06-15 14:31:54 +08:00
data >> size;
vec.resize(size);
for (quint32 i = 0; i < size; ++i) {
data >> vec[i];
}
2025-06-15 23:13:30 +08:00
data >> root;
2025-06-15 14:31:54 +08:00
}
};
#endif // INFO_DIR_FILE_H