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 #include "database_manager.h"
16 
17 namespace OHOS {
18 namespace FileManagement {
19 namespace CloudDisk {
20 using namespace std;
GetInstance()21 DatabaseManager &DatabaseManager::GetInstance()
22 {
23     static DatabaseManager instance_;
24     return instance_;
25 }
26 
GetRdbStore(const string & bundleName,int32_t userId)27 shared_ptr<CloudDiskRdbStore> DatabaseManager::GetRdbStore(const string &bundleName, int32_t userId)
28 {
29     std::unique_lock<std::shared_mutex> wLock(mapLock_, std::defer_lock);
30     string key = to_string(userId) + bundleName;
31 
32     wLock.lock();
33     if (rdbMap_.find(key) == rdbMap_.end()) {
34         rdbMap_[key] = make_shared<CloudDiskRdbStore>(bundleName, userId);
35     }
36     wLock.unlock();
37 
38     return rdbMap_[key];
39 }
40 } // namespace CloudDisk
41 } // namespace FileManagement
42 } // namespace OHOS
43