tdesktop/Telegram/SourceFiles/export/output/export_output_file.h

58 lines
1.2 KiB
C
Raw Normal View History

/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
#include "base/optional.h"
#include <QtCore/QFile>
#include <QtCore/QString>
#include <QtCore/QByteArray>
namespace Export {
namespace Output {
struct Result;
class Stats;
class File {
public:
File(const QString &path, Stats *stats);
2022-05-10 14:22:28 +00:00
[[nodiscard]] int64 size() const;
[[nodiscard]] bool empty() const;
2018-06-13 13:12:36 +00:00
[[nodiscard]] Result writeBlock(const QByteArray &block);
[[nodiscard]] static QString PrepareRelativePath(
const QString &folder,
const QString &suggested);
2018-06-23 20:27:41 +00:00
[[nodiscard]] static Result Copy(
const QString &source,
const QString &path,
Stats *stats);
private:
[[nodiscard]] Result reopen();
[[nodiscard]] Result writeBlockAttempt(const QByteArray &block);
[[nodiscard]] Result error() const;
[[nodiscard]] Result fatalError() const;
QString _path;
2022-05-10 14:22:28 +00:00
int64 _offset = 0;
2018-09-21 16:28:46 +00:00
std::optional<QFile> _file;
Stats *_stats = nullptr;
bool _inStats = false;
};
} // namespace Output
} // namespace File