MCPcopy Create free account
hub / github.com/OpenArkStudio/ARK / LoadEntityMeta

Method LoadEntityMeta

src/plugin/kernel/src/AFCClassMetaModule.cpp:137–209  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

135}
136
137bool AFCClassMetaModule::LoadEntityMeta(const std::string& schema_path)
138{
139 std::string file_path = GetPluginManager()->GetResPath() + schema_path;
140
141 ARK_LOG_INFO("Load entity class files: {}", file_path);
142
143 AFXml xml_doc(file_path);
144 auto root_node = xml_doc.GetRootNode();
145 ARK_ASSERT_RET_VAL(root_node.IsValid(), false);
146
147 for (auto meta_node = root_node.FindNode("meta"); meta_node.IsValid(); meta_node.NextNode())
148 {
149 std::string class_name = meta_node.GetString("class");
150 std::string data_name = meta_node.GetString("field_name");
151 std::string type_name = meta_node.GetString("type");
152 std::string type_class = meta_node.GetString("type_class");
153 uint32_t index = AFMetaNameIndex::GetIndex(class_name, data_name);
154
155 // data mask
156 uint32_t feature_sync_view = meta_node.GetUint32("sync_view");
157 uint32_t feature_sync_self = meta_node.GetUint32("sync_self");
158 uint32_t feature_save = meta_node.GetUint32("save");
159 uint32_t feature_real_time = meta_node.GetUint32("real_time");
160
161 // class meta
162 auto pClassMeta = m_pClassMetaManager->CreateMeta(class_name);
163 ARK_ASSERT_RET_VAL(pClassMeta != nullptr, false);
164
165 if (type_name == "class")
166 {
167 continue;
168 }
169
170 // data mask
171 ArkMaskType mask;
172 mask[(size_t)ArkDataMask::PF_SYNC_VIEW] = (feature_sync_view > 0 ? 1 : 0);
173 mask[(size_t)ArkDataMask::PF_SYNC_SELF] = (feature_sync_self > 0 ? 1 : 0);
174 mask[(size_t)ArkDataMask::PF_SAVE] = (feature_save > 0 ? 1 : 0);
175 mask[(size_t)ArkDataMask::PF_REAL_TIME] = (feature_real_time > 0 ? 1 : 0);
176
177 if (type_name == "container")
178 {
179 auto pContainerMeta = pClassMeta->CreateContainerMeta(data_name, index, type_class, mask);
180 ARK_ASSERT_RET_VAL(pContainerMeta != nullptr, false);
181 continue;
182 }
183
184 // convert type
185 ArkDataType data_type = ConvertDataType(type_name);
186 ARK_ASSERT_RET_VAL(data_type != ArkDataType::DT_EMPTY, false);
187
188 if (ArkDataType::DT_TABLE == data_type)
189 {
190 // create table meta
191 auto pTableMeta = pClassMeta->CreateTableMeta(data_name, index);
192 ARK_ASSERT_RET_VAL(pTableMeta != nullptr, false);
193
194 pTableMeta->SetTypeName(type_class);

Callers

nothing calls this directly

Calls 13

GetRootNodeMethod · 0.80
IsValidMethod · 0.80
NextNodeMethod · 0.80
GetUint32Method · 0.80
CreateMetaMethod · 0.80
CreateContainerMetaMethod · 0.80
CreateTableMetaMethod · 0.80
SetTypeNameMethod · 0.80
CreateDataMetaMethod · 0.80
FindNodeMethod · 0.45
GetStringMethod · 0.45
SetMaskMethod · 0.45

Tested by

no test coverage detected