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");