diff --git a/OAT.xml b/OAT.xml new file mode 100644 index 0000000000000000000000000000000000000000..02e212b1f84de4ae739c280f6024820a107d2f19 --- /dev/null +++ b/OAT.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/services/devicemanagerservice/include/message/msg_codec.h b/services/devicemanagerservice/include/message/msg_codec.h index 7c51a2de66da0e54d4ccb2eee14128e240a4c6f3..b0b088047ec023002064ac414bd2d2dc77c30033 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 eb79618950d5c433d10fafe39c28e11f655d3515..a19d8ff5431d6ce9f610fbfdd36f9b42c206f29f 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 a54d63e22ad646539dc316a8f09c5e22b8af643f..c98d5645add90caa1a750382cc8c59fb8e4bb3aa 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 cccb5f19779e54c90a360004977f25cf77235921..5ccb56be96db262b5d93ea18b54a03fb33a0d751 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_ = json.at(TAG_GROUPIDS).get>(); + 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 363377913a5d8cb675700d699bcfbc2dbc5cf2d0..82f7fb091f87dd1d969d20c4c6cb7cb3f3044f30 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");