Add metadata to pkginfo
[platform/core/appfw/pkgmgr-info.git] / src / common / parcel / pkginfo_parcelable.cc
index 5cbc049..e0f35d3 100644 (file)
@@ -186,6 +186,17 @@ void PkgInfoParcelable::WriteResAllowedPackages(tizen_base::Parcel* parcel,
   }
 }
 
+void PkgInfoParcelable::WriteMetadata(tizen_base::Parcel* parcel,
+    GList* metadata) const {
+  WriteInt(parcel, g_list_length(metadata));
+
+  for (GList* tmp = metadata; tmp; tmp = tmp->next) {
+    metadata_x* ptr = reinterpret_cast<metadata_x*>(tmp->data);
+    WriteString(parcel, ptr->key);
+    WriteString(parcel, ptr->value);
+  }
+}
+
 void PkgInfoParcelable::WritePackage(tizen_base::Parcel* parcel,
     package_x* package) const {
   WriteString(parcel, package->for_all_users);
@@ -235,6 +246,7 @@ void PkgInfoParcelable::WritePackage(tizen_base::Parcel* parcel,
   WriteDependencies(parcel, package->dependencies);
   WritePlugin(parcel, package->plugin);
   WriteResAllowedPackages(parcel, package->res_allowed_packages);
+  WriteMetadata(parcel, package->metadata);
 }
 
 void PkgInfoParcelable::ReadIcon(tizen_base::Parcel* parcel, GList** list) {
@@ -438,6 +450,20 @@ void PkgInfoParcelable::ReadResAllowedPackages(tizen_base::Parcel* parcel,
   }
 }
 
+void PkgInfoParcelable::ReadMetadata(tizen_base::Parcel* parcel, GList** list) {
+  int size = 0;
+  ReadInt(parcel, &size);
+
+  for (int i = 0; i < size; ++i) {
+    metadata_x* metadata =
+        reinterpret_cast<metadata_x*>(calloc(1, sizeof(metadata_x)));
+    ReadString(parcel, &metadata->key);
+    ReadString(parcel, &metadata->value);
+
+    *list = g_list_append(*list, metadata);
+  }
+}
+
 package_x* PkgInfoParcelable::ReadPackage(tizen_base::Parcel* parcel) {
   package_x* package =
       reinterpret_cast<package_x*>(calloc(1, sizeof(package_x)));
@@ -489,6 +515,7 @@ package_x* PkgInfoParcelable::ReadPackage(tizen_base::Parcel* parcel) {
   ReadDependencies(parcel, &package->dependencies);
   ReadPlugin(parcel, &package->plugin);
   ReadResAllowedPackages(parcel, &package->res_allowed_packages);
+  ReadMetadata(parcel, &package->metadata);
 
   return package;
 }