From be142ca81903fca1e0c1aca0dc5d78f5bacb0232 Mon Sep 17 00:00:00 2001 From: zuojiangjiang Date: Wed, 8 Nov 2023 22:14:14 +0800 Subject: [PATCH 1/2] update Signed-off-by: zuojiangjiang --- .../service/cloud/cloud_service_impl.cpp | 92 ++++++------------- .../service/cloud/cloud_service_impl.h | 1 + 2 files changed, 27 insertions(+), 66 deletions(-) diff --git a/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.cpp b/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.cpp index a5fe5fcf..3a12a7aa 100644 --- a/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.cpp +++ b/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.cpp @@ -596,16 +596,9 @@ std::map CloudServiceImpl::ConvertAction(const std::map &participants, Result>> &result) { - auto tokenId = IPCSkeleton::GetCallingTokenID(); - HapTokenInfo tokenInfo; - auto status = AccessTokenKit::GetHapTokenInfo(tokenId, tokenInfo); - if (status != RET_SUCCESS) { - ZLOGE("token:0x%{public}x, result:%{public}d", tokenId, status); - return E_ERROR; - } - auto instance = CloudServer::GetInstance(); + auto [instance, hapInfo] = GetSharingHandle(); if (instance == nullptr) { - return E_NOT_SUPPORT; + return NOT_SUPPORT; } return instance->Share(tokenInfo.userID, tokenInfo.bundleName, sharingRes, participants, result); } @@ -613,32 +606,18 @@ int32_t CloudServiceImpl::Share(const std::string &sharingRes, const std::vector int32_t CloudServiceImpl::Unshare(const std::string &sharingRes, const std::vector &participants, Result>> &result) { - auto tokenId = IPCSkeleton::GetCallingTokenID(); - HapTokenInfo tokenInfo; - auto status = AccessTokenKit::GetHapTokenInfo(tokenId, tokenInfo); - if (status != RET_SUCCESS) { - ZLOGE("token:0x%{public}x, result:%{public}d", tokenId, status); - return E_ERROR; - } - auto instance = CloudServer::GetInstance(); + auto [instance, hapInfo] = GetSharingHandle(); if (instance == nullptr) { - return E_NOT_SUPPORT; + return NOT_SUPPORT; } return instance->Unshare(tokenInfo.userID, tokenInfo.bundleName, sharingRes, participants, result); } int32_t CloudServiceImpl::ExitSharing(const std::string &sharingRes, Result &result) { - auto tokenId = IPCSkeleton::GetCallingTokenID(); - HapTokenInfo tokenInfo; - auto status = AccessTokenKit::GetHapTokenInfo(tokenId, tokenInfo); - if (status != RET_SUCCESS) { - ZLOGE("token:0x%{public}x, result:%{public}d", tokenId, status); - return E_ERROR; - } - auto instance = CloudServer::GetInstance(); + auto [instance, hapInfo] = GetSharingHandle(); if (instance == nullptr) { - return E_NOT_SUPPORT; + return NOT_SUPPORT; } return instance->ExitSharing(tokenInfo.userID, tokenInfo.bundleName, sharingRes, result); } @@ -646,32 +625,18 @@ int32_t CloudServiceImpl::ExitSharing(const std::string &sharingRes, Result &participants, Result>> &result) { - auto tokenId = IPCSkeleton::GetCallingTokenID(); - HapTokenInfo tokenInfo; - auto status = AccessTokenKit::GetHapTokenInfo(tokenId, tokenInfo); - if (status != RET_SUCCESS) { - ZLOGE("token:0x%{public}x, result:%{public}d", tokenId, status); - return E_ERROR; - } - auto instance = CloudServer::GetInstance(); + auto [instance, hapInfo] = GetSharingHandle(); if (instance == nullptr) { - return E_NOT_SUPPORT; + return NOT_SUPPORT; } return instance->ChangePrivilege(tokenInfo.userID, tokenInfo.bundleName, sharingRes, participants, result); } int32_t CloudServiceImpl::QueryParticipants(const std::string &sharingRes, Result> &result) { - auto tokenId = IPCSkeleton::GetCallingTokenID(); - HapTokenInfo tokenInfo; - auto status = AccessTokenKit::GetHapTokenInfo(tokenId, tokenInfo); - if (status != RET_SUCCESS) { - ZLOGE("token:0x%{public}x, result:%{public}d", tokenId, status); - return E_ERROR; - } - auto instance = CloudServer::GetInstance(); + auto [instance, hapInfo] = GetSharingHandle(); if (instance == nullptr) { - return E_NOT_SUPPORT; + return NOT_SUPPORT; } return instance->QueryParticipants(tokenInfo.userID, tokenInfo.bundleName, sharingRes, result); } @@ -679,16 +644,9 @@ int32_t CloudServiceImpl::QueryParticipants(const std::string &sharingRes, Resul int32_t CloudServiceImpl::QueryParticipantsByInvitation(const std::string &invitationCode, Result> &result) { - auto tokenId = IPCSkeleton::GetCallingTokenID(); - HapTokenInfo tokenInfo; - auto status = AccessTokenKit::GetHapTokenInfo(tokenId, tokenInfo); - if (status != RET_SUCCESS) { - ZLOGE("token:0x%{public}x, result:%{public}d", tokenId, status); - return E_ERROR; - } - auto instance = CloudServer::GetInstance(); + auto [instance, hapInfo] = GetSharingHandle(); if (instance == nullptr) { - return E_NOT_SUPPORT; + return NOT_SUPPORT; } return instance->QueryParticipantsByInvitation(tokenInfo.userID, tokenInfo.bundleName, invitationCode, result); } @@ -696,34 +654,36 @@ int32_t CloudServiceImpl::QueryParticipantsByInvitation(const std::string &invit int32_t CloudServiceImpl::ConfirmInvitation(const std::string &invitationCode, SharingStatus sharingStatus, Result &result) { - auto tokenId = IPCSkeleton::GetCallingTokenID(); - HapTokenInfo tokenInfo; - auto status = AccessTokenKit::GetHapTokenInfo(tokenId, tokenInfo); - if (status != RET_SUCCESS) { - ZLOGE("token:0x%{public}x, result:%{public}d", tokenId, status); - return E_ERROR; - } - auto instance = CloudServer::GetInstance(); + auto [instance, hapInfo] = GetSharingHandle(); if (instance == nullptr) { - return E_NOT_SUPPORT; + return NOT_SUPPORT; } return instance->ConfirmInvitation(tokenInfo.userID, tokenInfo.bundleName, invitationCode, sharingStatus, result); } int32_t CloudServiceImpl::ChangeConfirmation( const std::string &sharingRes, SharingStatus sharingStatus, Result &result) +{ + auto [instance, hapInfo] = GetSharingHandle(); + if (instance == nullptr) { + return NOT_SUPPORT; + } + return instance->ChangeConfirmation(tokenInfo.userID, tokenInfo.bundleName, sharingRes, sharingStatus, result); +} + +std::pair CloudServiceImpl::GetSharingHandle() { auto tokenId = IPCSkeleton::GetCallingTokenID(); HapTokenInfo tokenInfo; auto status = AccessTokenKit::GetHapTokenInfo(tokenId, tokenInfo); if (status != RET_SUCCESS) { ZLOGE("token:0x%{public}x, result:%{public}d", tokenId, status); - return E_ERROR; + return { nullptr, {} }; } auto instance = CloudServer::GetInstance(); if (instance == nullptr) { - return E_NOT_SUPPORT; + return { nullptr, {} }; } - return instance->ChangeConfirmation(tokenInfo.userID, tokenInfo.bundleName, sharingRes, sharingStatus, result); + return { instance, { tokenInfo.userID, tokenInfo.bundleName } }; } } // namespace OHOS::CloudData \ No newline at end of file diff --git a/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.h b/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.h index 6827ac87..090131d8 100644 --- a/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.h +++ b/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.h @@ -103,6 +103,7 @@ private: bool DoSubscribe(int32_t user); bool ReleaseUserInfo(int32_t user); int32_t DoClean(CloudInfo &cloudInfo, const std::map &actions); + std::pair GetSharingHandle(); std::shared_ptr executor_; SyncManager syncManager_; -- Gitee From 5e732098154d96279a6aeeed18e70e5fc80dbecf Mon Sep 17 00:00:00 2001 From: zuojiangjiang Date: Wed, 8 Nov 2023 22:17:37 +0800 Subject: [PATCH 2/2] update Signed-off-by: zuojiangjiang --- .../distributeddataservice/service/cloud/cloud_service_impl.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.h b/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.h index 090131d8..f10afb27 100644 --- a/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.h +++ b/datamgr_service/services/distributeddataservice/service/cloud/cloud_service_impl.h @@ -87,6 +87,10 @@ private: static constexpr int32_t RETRY_TIMES = 3; static constexpr int32_t RETRY_INTERVAL = 60; static constexpr int32_t EXPIRE_INTERVAL = 2 * 24; // 2 day + struct HapInfo { + int32_t user; + std::string bundleName; + }; bool UpdateCloudInfo(int32_t user); bool UpdateSchema(int32_t user); -- Gitee