Merge remote-tracking branch 'upstream/develop' into refactor/net-split-headers-to-proxy-class
This commit is contained in:
@ -37,7 +37,7 @@ auto ApiDownload::makeCached(QUrl url, MetaEntryPtr entry, Options options) -> D
|
||||
return dl;
|
||||
}
|
||||
|
||||
auto ApiDownload::makeByteArray(QUrl url, QByteArray* output, Options options) -> Download::Ptr
|
||||
auto ApiDownload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options) -> Download::Ptr
|
||||
{
|
||||
auto dl = makeShared<ApiDownload>();
|
||||
dl->m_url = url;
|
||||
|
@ -29,7 +29,7 @@ class ApiDownload : public Download {
|
||||
virtual ~ApiDownload() = default;
|
||||
|
||||
static auto makeCached(QUrl url, MetaEntryPtr entry, Options options = Option::NoOptions) -> Download::Ptr;
|
||||
static auto makeByteArray(QUrl url, QByteArray* output, Options options = Option::NoOptions) -> Download::Ptr;
|
||||
static auto makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options = Option::NoOptions) -> Download::Ptr;
|
||||
static auto makeFile(QUrl url, QString path, Options options = Option::NoOptions) -> Download::Ptr;
|
||||
|
||||
void init() override;
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
namespace Net {
|
||||
|
||||
Upload::Ptr ApiUpload::makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data)
|
||||
Upload::Ptr ApiUpload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data)
|
||||
{
|
||||
auto up = makeShared<ApiUpload>();
|
||||
up->m_url = std::move(url);
|
||||
|
@ -28,7 +28,7 @@ class ApiUpload : public Upload {
|
||||
public:
|
||||
virtual ~ApiUpload() = default;
|
||||
|
||||
static Upload::Ptr makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data);
|
||||
static Upload::Ptr makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data);
|
||||
|
||||
void init() override;
|
||||
};
|
||||
|
@ -1,7 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
/*
|
||||
* PolyMC - Minecraft Launcher
|
||||
* Prism Launcher - Minecraft Launcher
|
||||
* Copyright (c) 2022 flowln <flowlnlnln@gmail.com>
|
||||
* Copyright (c) 2023 Trial97 <alexandru.tripon97@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
|
||||
@ -41,12 +42,10 @@ namespace Net {
|
||||
|
||||
/*
|
||||
* Sink object for downloads that uses an external QByteArray it doesn't own as a target.
|
||||
* FIXME: It is possible that the QByteArray is freed while we're doing some operation on it,
|
||||
* causing a segmentation fault.
|
||||
*/
|
||||
class ByteArraySink : public Sink {
|
||||
public:
|
||||
ByteArraySink(QByteArray* output) : m_output(output){};
|
||||
ByteArraySink(std::shared_ptr<QByteArray> output) : m_output(output){};
|
||||
|
||||
virtual ~ByteArraySink() = default;
|
||||
|
||||
@ -93,6 +92,6 @@ class ByteArraySink : public Sink {
|
||||
auto hasLocalData() -> bool override { return false; }
|
||||
|
||||
private:
|
||||
QByteArray* m_output;
|
||||
std::shared_ptr<QByteArray> m_output;
|
||||
};
|
||||
} // namespace Net
|
||||
|
@ -41,6 +41,7 @@
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QFileInfo>
|
||||
#include <memory>
|
||||
|
||||
#include "ByteArraySink.h"
|
||||
#include "ChecksumValidator.h"
|
||||
@ -74,7 +75,7 @@ auto Download::makeCached(QUrl url, MetaEntryPtr entry, Options options) -> Down
|
||||
}
|
||||
#endif
|
||||
|
||||
auto Download::makeByteArray(QUrl url, QByteArray* output, Options options) -> Download::Ptr
|
||||
auto Download::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options) -> Download::Ptr
|
||||
{
|
||||
auto dl = makeShared<Download>();
|
||||
dl->m_url = url;
|
||||
|
@ -60,7 +60,7 @@ class Download : public NetAction {
|
||||
~Download() override = default;
|
||||
|
||||
static auto makeCached(QUrl url, MetaEntryPtr entry, Options options = Option::NoOptions) -> Download::Ptr;
|
||||
static auto makeByteArray(QUrl url, QByteArray* output, Options options = Option::NoOptions) -> Download::Ptr;
|
||||
static auto makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options = Option::NoOptions) -> Download::Ptr;
|
||||
static auto makeFile(QUrl url, QString path, Options options = Option::NoOptions) -> Download::Ptr;
|
||||
|
||||
void init() override {};
|
||||
|
@ -38,6 +38,7 @@
|
||||
|
||||
#include "Upload.h"
|
||||
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
#include "BuildConfig.h"
|
||||
#include "ByteArraySink.h"
|
||||
@ -256,7 +257,7 @@ void Upload::executeTask()
|
||||
connect(rep, &QNetworkReply::readyRead, this, &Upload::downloadReadyRead);
|
||||
}
|
||||
|
||||
Upload::Ptr Upload::makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data)
|
||||
Upload::Ptr Upload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data)
|
||||
{
|
||||
auto up = makeShared<Upload>();
|
||||
up->m_url = std::move(url);
|
||||
|
@ -48,7 +48,7 @@ class Upload : public NetAction {
|
||||
public:
|
||||
using Ptr = shared_qobject_ptr<Upload>;
|
||||
|
||||
static Upload::Ptr makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data);
|
||||
static Upload::Ptr makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data);
|
||||
auto abort() -> bool override;
|
||||
auto canAbort() const -> bool override { return true; };
|
||||
virtual void init() override{};
|
||||
|
Reference in New Issue
Block a user