* Copyright (c) 2023 Huawei Device Co., Ltd.
* 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.
*/
#include "base/network/download_manager.h"
#include <memory>
#include <mutex>
#include <optional>
#include <vector>
#include "base/log/log.h"
#include "base/utils/utils.h"
#include "ace_download_bridge.h"
namespace OHOS::Ace {
std::unique_ptr<DownloadManager> DownloadManager::instance_ = nullptr;
std::mutex DownloadManager::mutex_;
class DownloadManagerImpl final : public DownloadManager {
public:
bool Download(const std::string& url, std::vector<uint8_t>& dataOut) override
{
return Platform::AceDownloadBridge::download(url, dataOut);
}
bool Download(const std::string& url, const std::shared_ptr<DownloadResult>& result) override
{
return false;
}
bool DownloadAsync(
DownloadCallback&& downloadCallback, const std::string& url, int32_t instanceId, int32_t nodeId) override
{
return false;
}
bool DownloadSync(
DownloadCallback&& downloadCallback, const std::string& url, int32_t instanceId, int32_t nodeId) override
{
return false;
}
bool DownloadAsyncWithPreload(
DownloadCallback&& downloadCallback, const std::string& url, int32_t instanceId) override
{
return false;
}
bool DownloadSyncWithPreload(
DownloadCallback&& downloadCallback, const std::string& url, int32_t instanceId) override
{
return false;
}
bool fetchCachedResult(const std::string& url, std::string& result) override
{
return false;
}
bool RemoveDownloadTask(const std::string& url, int32_t nodeId, bool isCancel = true) override
{
return false;
}
bool RemoveDownloadTaskWithPreload(const std::string& url, bool isCancel = true) override
{
return false;
}
bool IsContains(const std::string& url) override
{
return false;
}
void* WrapDownloadInfoToNapiValue(void* env, const ImageErrorInfo& errorInfo) override
{
return nullptr;
}
DownloadManagerImpl() = default;
~DownloadManagerImpl() = default;
};
DownloadManager* DownloadManager::GetInstance()
{
if (!instance_) {
std::lock_guard<std::mutex> lock(mutex_);
if (!instance_) {
instance_.reset(new DownloadManagerImpl());
}
}
return instance_.get();
}
}