From 58347b932486e95a860a07e8c664f8295538ac09 Mon Sep 17 00:00:00 2001 From: yuqianyuan Date: Mon, 27 Sep 2021 15:32:29 +0800 Subject: [PATCH 1/3] server sync group Signed-off-by: yuqianyuan --- .../include/message/msg_codec.h | 1 + .../include/message/msg_sync_group.h | 4 +++ .../src/message/msg_codec.cpp | 14 ++++++++++ .../src/message/msg_sync_group.cpp | 27 +++++++++++++++++++ .../src/requestauth/auth_manager.cpp | 15 +++++++++++ 5 files changed, 61 insertions(+) diff --git a/services/devicemanagerservice/include/message/msg_codec.h b/services/devicemanagerservice/include/message/msg_codec.h index 7c51a2de6..b0b088047 100644 --- a/services/devicemanagerservice/include/message/msg_codec.h +++ b/services/devicemanagerservice/include/message/msg_codec.h @@ -39,6 +39,7 @@ public: static std::shared_ptr DecodeRequestAuth(std::string &jsonStr, std::shared_ptr msgRequestAuth); static std::shared_ptr DecodeResponseAuth(std::string &jsonStr); + static std::shared_ptr DecodeSyncGroup(std::string &jsonStr); }; } } diff --git a/services/devicemanagerservice/include/message/msg_sync_group.h b/services/devicemanagerservice/include/message/msg_sync_group.h index eb7961895..a19d8ff54 100644 --- a/services/devicemanagerservice/include/message/msg_sync_group.h +++ b/services/devicemanagerservice/include/message/msg_sync_group.h @@ -27,9 +27,13 @@ namespace OHOS { namespace DistributedHardware { class MsgSyncGroup { public: + MsgSyncGroup() {}; MsgSyncGroup(std::vector &groupList, std::string &deviceId); ~MsgSyncGroup() = default; void Encode(nlohmann::json &json); + int32_t Decode(nlohmann::json &json); + std::string GetDeviceId(); + std::vector GetGroupIdList(); private: std::shared_ptr mHead_; diff --git a/services/devicemanagerservice/src/message/msg_codec.cpp b/services/devicemanagerservice/src/message/msg_codec.cpp index a54d63e22..c98d5645a 100644 --- a/services/devicemanagerservice/src/message/msg_codec.cpp +++ b/services/devicemanagerservice/src/message/msg_codec.cpp @@ -95,5 +95,19 @@ std::shared_ptr MsgCodec::DecodeResponseAuth(std::string &jsonS } return nullptr; } + +std::shared_ptr MsgCodec::DecodeSyncGroup(std::string &jsonStr) +{ + nlohmann::json jsonObject = nlohmann::json::parse(jsonStr, nullptr, false); + if (jsonObject.is_discarded()) { + DMLOG(DM_LOG_ERROR, "DecodeSyncGroup jsonStr error"); + return nullptr; + } + std::shared_ptr msgSyncGroupPtr = std::make_shared(); + if (msgSyncGroupPtr->Decode(jsonObject) == 0) { + return msgSyncGroupPtr; + } + return nullptr; +} } } diff --git a/services/devicemanagerservice/src/message/msg_sync_group.cpp b/services/devicemanagerservice/src/message/msg_sync_group.cpp index cccb5f197..935f1964d 100644 --- a/services/devicemanagerservice/src/message/msg_sync_group.cpp +++ b/services/devicemanagerservice/src/message/msg_sync_group.cpp @@ -16,6 +16,7 @@ #include "msg_sync_group.h" #include "device_manager_log.h" #include "constants.h" +#include "device_manager_errno.h" namespace OHOS { namespace DistributedHardware { @@ -36,5 +37,31 @@ void MsgSyncGroup::Encode(nlohmann::json &json) json[TAG_DEVICE_ID] = mDeviceId_; json[TAG_GROUPIDS] = mGroupIdList_; } + +int32_t MsgSyncGroup::Decode(nlohmann::json &json) +{ + DMLOG(DM_LOG_INFO, "MsgSyncGroup decode started"); + if (!json.contains(TAG_DEVICE_ID) || !json.contains(TAG_GROUPIDS)) { + DMLOG(DM_LOG_ERROR, "MsgSyncGroup::decode err "); + return MSG_DECODE_PARA_FAILED; + } + + MsgHead msgHead; + mHead_ = msgHead.Decode(json); + mDeviceId_ = json[TAG_DEVICE_ID]; + mGroupIdList_ = (std::vector)json[TAG_GROUPIDS]; + DMLOG(DM_LOG_INFO, "MsgSyncGroup decode completed"); + return DEVICEMANAGER_OK; +} + +std::string MsgSyncGroup::GetDeviceId() +{ + return mDeviceId_; +} + +std::vector MsgSyncGroup::GetGroupIdList() +{ + return mGroupIdList_; +} } } \ No newline at end of file diff --git a/services/devicemanagerservice/src/requestauth/auth_manager.cpp b/services/devicemanagerservice/src/requestauth/auth_manager.cpp index 363377913..82f7fb091 100644 --- a/services/devicemanagerservice/src/requestauth/auth_manager.cpp +++ b/services/devicemanagerservice/src/requestauth/auth_manager.cpp @@ -24,6 +24,7 @@ #include "softbus_session.h" #include "encrypt_utils.h" #include "ipc_server_listener_adapter.h" +#include "msg_sync_group.h" namespace OHOS { namespace DistributedHardware { @@ -45,6 +46,9 @@ void AuthManager::OnReceiveMsg(long long channelId, std::string &message) case MSG_TYPE_AUTH_BY_PIN: OnReceiveMessage(channelId, message, msgType); break; + case MSG_TYPE_SYNC_GROUP: + SyncDmPrivateGroup(message); + break; default: DMLOG(DM_LOG_INFO, "msgType not support yet, msgType: %d", msgType); break; @@ -154,6 +158,17 @@ void AuthManager::OnReceiveMessage(long long channelId, std::string &message, in } } +void AuthManager::SyncDmPrivateGroup(std::string &message) +{ + std::shared_ptr msgSyncGroupPtr = MsgCodec::DecodeSyncGroup(message); + if (msgSyncGroupPtr == nullptr) { + DMLOG(DM_LOG_ERROR, "decode syncGroup message err"); + return; + } + std::vector groupIdList = msgSyncGroupPtr->GetGroupIdList(); + HichainConnector::GetInstance().SyncGroups(msgSyncGroupPtr->GetDeviceId(), groupIdList); +} + void AuthManager::MoveSessionToWaitScanMap() { DMLOG(DM_LOG_ERROR, "AuthManager::MoveSessionToWaitScanMap"); -- Gitee From 18805f2d809467c0f538fabdf4912ebc44b28db8 Mon Sep 17 00:00:00 2001 From: yuqianyuan Date: Mon, 27 Sep 2021 16:49:47 +0800 Subject: [PATCH 2/3] sync group Signed-off-by: yuqianyuan --- OAT.xml | 66 +++++++++++++++++++ .../src/message/msg_sync_group.cpp | 2 +- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 OAT.xml diff --git a/OAT.xml b/OAT.xml new file mode 100644 index 000000000..02e212b1f --- /dev/null +++ b/OAT.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/services/devicemanagerservice/src/message/msg_sync_group.cpp b/services/devicemanagerservice/src/message/msg_sync_group.cpp index 935f1964d..28c95bda0 100644 --- a/services/devicemanagerservice/src/message/msg_sync_group.cpp +++ b/services/devicemanagerservice/src/message/msg_sync_group.cpp @@ -49,7 +49,7 @@ int32_t MsgSyncGroup::Decode(nlohmann::json &json) MsgHead msgHead; mHead_ = msgHead.Decode(json); mDeviceId_ = json[TAG_DEVICE_ID]; - mGroupIdList_ = (std::vector)json[TAG_GROUPIDS]; + mGroupIdList_ = static_cast>(json[TAG_GROUPIDS]); DMLOG(DM_LOG_INFO, "MsgSyncGroup decode completed"); return DEVICEMANAGER_OK; } -- Gitee From dced5ea684e56dfdcc2e1ed40aa63d46a60732dd Mon Sep 17 00:00:00 2001 From: yuqianyuan Date: Mon, 27 Sep 2021 17:02:47 +0800 Subject: [PATCH 3/3] sync group Signed-off-by: yuqianyuan --- services/devicemanagerservice/src/message/msg_sync_group.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/devicemanagerservice/src/message/msg_sync_group.cpp b/services/devicemanagerservice/src/message/msg_sync_group.cpp index 28c95bda0..5ccb56be9 100644 --- a/services/devicemanagerservice/src/message/msg_sync_group.cpp +++ b/services/devicemanagerservice/src/message/msg_sync_group.cpp @@ -49,7 +49,7 @@ int32_t MsgSyncGroup::Decode(nlohmann::json &json) MsgHead msgHead; mHead_ = msgHead.Decode(json); mDeviceId_ = json[TAG_DEVICE_ID]; - mGroupIdList_ = static_cast>(json[TAG_GROUPIDS]); + mGroupIdList_ = json.at(TAG_GROUPIDS).get>(); DMLOG(DM_LOG_INFO, "MsgSyncGroup decode completed"); return DEVICEMANAGER_OK; } -- Gitee