1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "download_asset_callback_client.h"
17
18 #include <cinttypes>
19
20 #include "utils_log.h"
21
22 namespace OHOS::FileManagement::CloudSync {
23 using namespace std;
OnFinished(const TaskId taskId,const std::string & uri,const int32_t result)24 void DownloadAssetCallbackClient::OnFinished(const TaskId taskId, const std::string &uri, const int32_t result)
25 {
26 auto callback = GetDownloadTaskCallback(taskId);
27 if (callback) {
28 LOGD("callback");
29 callback(uri, result);
30 }
31 RemoveDownloadTaskCallback(taskId);
32 LOGD("On Download finished, taskId:%{public}" PRIu64 ", uri:%{public}s, ret:%{public}d",
33 taskId, GetAnonyString(uri).c_str(),
34 result);
35 }
36
AddDownloadTaskCallback(TaskId taskId,CloudSyncAssetManager::ResultCallback callback)37 void DownloadAssetCallbackClient::AddDownloadTaskCallback(TaskId taskId, CloudSyncAssetManager::ResultCallback callback)
38 {
39 LOGD("taskId = %{public}" PRIu64 "", taskId);
40 callbackListMap_.EnsureInsert(taskId, std::move(callback));
41 }
42
RemoveDownloadTaskCallback(TaskId taskId)43 void DownloadAssetCallbackClient::RemoveDownloadTaskCallback(TaskId taskId)
44 {
45 CloudSyncAssetManager::ResultCallback callback;
46 if (callbackListMap_.Find(taskId, callback)) {
47 callbackListMap_.Erase(taskId);
48 return;
49 }
50 LOGE("not find task callback, taskId = %{public}" PRIu64 "", taskId);
51 }
52
GetDownloadTaskCallback(TaskId taskId)53 CloudSyncAssetManager::ResultCallback DownloadAssetCallbackClient::GetDownloadTaskCallback(TaskId taskId)
54 {
55 CloudSyncAssetManager::ResultCallback callback;
56 if (callbackListMap_.Find(taskId, callback)) {
57 return callback;
58 }
59 LOGE("not find task callback, taskId = %{public}" PRIu64 "", taskId);
60 return std::function<void(const std::string &, int32_t)>{}; // empty function
61 }
62
GetTaskId()63 DownloadAssetCallback::TaskId DownloadAssetCallbackClient::GetTaskId()
64 {
65 return taskId_.fetch_add(1);
66 }
67 } // namespace OHOS::FileManagement::CloudSync