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