Files
.github
buildconfig
cmake
flatpak
launcher
icons
java
launch
meta
minecraft
modplatform
mojang
net
ByteArraySink.h
ChecksumValidator.h
Download.cpp
Download.h
FileSink.cpp
FileSink.h
HttpMetaCache.cpp
HttpMetaCache.h
MetaCacheSink.cpp
MetaCacheSink.h
Mode.h
NetAction.h
NetJob.cpp
NetJob.h
NetUtils.h
PasteUpload.cpp
PasteUpload.h
Sink.h
Upload.cpp
Upload.h
Validator.h
news
pathmatcher
resources
screenshots
settings
tasks
tools
translations
ui
updater
Application.cpp
Application.h
ApplicationMessage.cpp
ApplicationMessage.h
BaseInstaller.cpp
BaseInstaller.h
BaseInstance.cpp
BaseInstance.h
BaseVersion.h
BaseVersionList.cpp
BaseVersionList.h
CMakeLists.txt
Commandline.cpp
Commandline.h
DataMigrationTask.cpp
DataMigrationTask.h
DefaultVariable.h
DesktopServices.cpp
DesktopServices.h
Exception.h
ExponentialSeries.h
FileSystem.cpp
FileSystem.h
Filter.cpp
Filter.h
GZip.cpp
GZip.h
InstanceCopyPrefs.cpp
InstanceCopyPrefs.h
InstanceCopyTask.cpp
InstanceCopyTask.h
InstanceCreationTask.cpp
InstanceCreationTask.h
InstanceImportTask.cpp
InstanceImportTask.h
InstanceList.cpp
InstanceList.h
InstancePageProvider.h
InstanceTask.cpp
InstanceTask.h
JavaCommon.cpp
JavaCommon.h
Json.cpp
Json.h
KonamiCode.cpp
KonamiCode.h
LaunchController.cpp
LaunchController.h
Launcher.in
LoggedProcess.cpp
LoggedProcess.h
MMCTime.cpp
MMCTime.h
MMCZip.cpp
MMCZip.h
MTPixmapCache.h
MangoHud.cpp
MangoHud.h
Markdown.h
MessageLevel.cpp
MessageLevel.h
NullInstance.h
ProblemProvider.h
QObjectPtr.h
RWStorage.h
RecursiveFileSystemWatcher.cpp
RecursiveFileSystemWatcher.h
ResourceDownloadTask.cpp
ResourceDownloadTask.h
RuntimeContext.h
SeparatorPrefixTree.h
SkinUtils.cpp
SkinUtils.h
StringUtils.cpp
StringUtils.h
Usable.h
Version.cpp
Version.h
VersionProxyModel.cpp
VersionProxyModel.h
WatchLock.h
install_prereqs.cmake.in
main.cpp
libraries
nix
program_info
snap
tests
.clang-format
.gitattributes
.gitignore
.gitmodules
.markdownlint.yaml
.markdownlintignore
BUILD.md
CMakeLists.txt
CODE_OF_CONDUCT.md
CONTRIBUTING.md
COPYING.md
LICENSE
README.md
default.nix
flake.lock
flake.nix
renovate.json
PrismLauncher/launcher/net/FileSink.h

66 lines
2.2 KiB
C++

// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Copyright (c) 2022 flowln <flowlnlnln@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <QSaveFile>
#include "Sink.h"
namespace Net {
class FileSink : public Sink {
public:
FileSink(QString filename) : m_filename(filename){};
virtual ~FileSink() = default;
public:
auto init(QNetworkRequest& request) -> Task::State override;
auto write(QByteArray& data) -> Task::State override;
auto abort() -> Task::State override;
auto finalize(QNetworkReply& reply) -> Task::State override;
auto hasLocalData() -> bool override;
protected:
virtual auto initCache(QNetworkRequest&) -> Task::State;
virtual auto finalizeCache(QNetworkReply& reply) -> Task::State;
protected:
QString m_filename;
bool wroteAnyData = false;
std::unique_ptr<QSaveFile> m_output_file;
};
} // namespace Net