Add metadata to pkginfo
[platform/core/appfw/pkgmgr-info.git] / src / common / parcel / pkginfo_parcelable.hh
index 0138677..4e3d588 100644 (file)
@@ -2,12 +2,13 @@
 #define PKGINFO_PARCELABLE_HH_
 
 #include "abstract_parcelable.hh"
-#include "pkg_set_db_handler.hh"
 
 #include <vector>
 
 #include "pkgmgrinfo_basic.h"
 
+#include "pkg_write_type.hh"
+
 namespace pkgmgr_common {
 namespace parcel {
 
@@ -17,15 +18,16 @@ namespace parcel {
 
 class EXPORT_API PkgInfoParcelable : public AbstractParcelable {
  public:
-  class EXPORT_API Factory : IFactory {
-   public:
-    std::unique_ptr<AbstractParcelable> CreateParcel();
-  };
-
   PkgInfoParcelable();
-  PkgInfoParcelable(uid_t uid, std::vector<package_x *>&& pkg_list, WriteType write_type = None);
-  const std::vector<package_x *>& GetPkgInfo();
-  WriteType GetWriteType();
+  PkgInfoParcelable(uid_t uid,
+      std::vector<std::shared_ptr<package_x>>&& pkg_list,
+      PkgWriteType write_type, bool auto_release = true);
+  PkgInfoParcelable(int ret, std::vector<std::shared_ptr<package_x>>&& pkg_list,
+      bool auto_release = true);
+  ~PkgInfoParcelable();
+  const std::vector<std::shared_ptr<package_x>>& GetPkgInfo();
+  std::vector<std::shared_ptr<package_x>> ExtractPkgInfo();
+  PkgWriteType GetWriteType();
 
   void WriteToParcel(tizen_base::Parcel* parcel) const override;
   void ReadFromParcel(tizen_base::Parcel* parcel) override;
@@ -37,14 +39,22 @@ class EXPORT_API PkgInfoParcelable : public AbstractParcelable {
   void WriteDescription(tizen_base::Parcel* parcel, GList* description) const;
   void WriteLicense(tizen_base::Parcel* parcel, GList* license) const;
   void WritePrivileges(tizen_base::Parcel* parcel, GList* privileges) const;
-  void WriteAppdefinedPrivileges(tizen_base::Parcel* parcel, GList* appdefined_privileges) const;
-  void WriteProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel, GList* provides_appdefined_privileges) const;
+  void WriteAppdefinedPrivileges(tizen_base::Parcel* parcel,
+      GList* appdefined_privileges) const;
+  void WriteProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel,
+      GList* provides_appdefined_privileges) const;
   void WriteApplication(tizen_base::Parcel* parcel, GList* application) const;
-  void WriteCompatibility(tizen_base::Parcel* parcel, GList* compatibility) const;
-  void WriteDeviceprofile(tizen_base::Parcel* parcel, GList* deviceprofile) const;
-  void WriteDependencies(tizen_base::Parcel* parcel, GList* dependencies) const;
+  void WriteCompatibility(tizen_base::Parcel* parcel,
+      GList* compatibility) const;
+  void WriteDeviceprofile(tizen_base::Parcel* parcel,
+      GList* deviceprofile) const;
+  void WriteDependencies(tizen_base::Parcel* parcel,
+      GList* dependencies) const;
   void WritePlugin(tizen_base::Parcel* parcel, GList* plugin) const;
-  void WritePackage(tizen_base::Parcel* parcel, package_x *package) const;
+  void WriteResAllowedPackages(tizen_base::Parcel* parcel,
+      GList* plugin) const;
+  void WriteMetadata(tizen_base::Parcel* parcel, GList* metadata) const;
+  void WritePackage(tizen_base::Parcel* parcel, package_x* package) const;
   void ReadIcon(tizen_base::Parcel* parcel, GList** list);
   void ReadLabel(tizen_base::Parcel* parcel, GList** list);
   void ReadAuthor(tizen_base::Parcel* parcel, GList** list);
@@ -52,16 +62,20 @@ class EXPORT_API PkgInfoParcelable : public AbstractParcelable {
   void ReadLicense(tizen_base::Parcel* parcel, GList** list);
   void ReadPrivileges(tizen_base::Parcel* parcel, GList** list);
   void ReadAppdefinedPrivileges(tizen_base::Parcel* parcel, GList** list);
-  void ReadProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel, GList** list);
+  void ReadProvidesAppdefinedPrivileges(tizen_base::Parcel* parcel,
+      GList** list);
   void ReadApplication(tizen_base::Parcel* parcel, GList** list);
   void ReadCompatibility(tizen_base::Parcel* parcel, GList** list);
   void ReadDeviceprofile(tizen_base::Parcel* parcel, GList** list);
   void ReadDependencies(tizen_base::Parcel* parcel, GList** list);
   void ReadPlugin(tizen_base::Parcel* parcel, GList** list);
-  package_x *ReadPackage(tizen_base::Parcel* parcel);
+  void ReadResAllowedPackages(tizen_base::Parcel* parcel, GList** list);
+  void ReadMetadata(tizen_base::Parcel* parcel, GList** list);
+  package_x* ReadPackage(tizen_base::Parcel* parcel);
 
-  std::vector<package_x *> pkg_list_;
-  WriteType write_type_;
+  std::vector<std::shared_ptr<package_x>> pkg_list_;
+  PkgWriteType write_type_;
+  bool auto_release_;
 };
 
 }  // namespace parcel