namespace pkgmgr_common {
namespace parcel {
-FilterParcelable::FilterParcelable() :
- AbstractParcelable(0, ParcelableType::Filter), filter_(nullptr), flag_(0) {}
+FilterParcelable::FilterParcelable()
+ : AbstractParcelable(0, ParcelableType::Filter),
+ filter_(nullptr),
+ flag_(0), auto_release_(true) {}
-FilterParcelable::FilterParcelable(uid_t uid, pkgmgrinfo_filter_x *filter,
- int flag) : AbstractParcelable(uid, ParcelableType::Filter),
- filter_(filter), flag_(flag) {}
+FilterParcelable::FilterParcelable(uid_t uid, pkgmgrinfo_filter_x* filter,
+ int flag, bool auto_release)
+ : AbstractParcelable(uid, ParcelableType::Filter),
+ filter_(filter),
+ flag_(flag), auto_release_(auto_release) {}
FilterParcelable::~FilterParcelable() {
- pkgmgrinfo_pkginfo_filter_destroy(filter_);
+ if (!auto_release_)
+ return;
+
+ if (filter_ != nullptr)
+ pkgmgrinfo_pkginfo_filter_destroy(filter_);
}
-const pkgmgrinfo_filter_x *FilterParcelable::GetFilter() {
+const pkgmgrinfo_filter_x* FilterParcelable::GetFilter() {
return filter_;
}
ReadFilter(parcel);
}
-bool FilterParcelable::WriteFilter(
- tizen_base::Parcel* parcel, pkgmgrinfo_filter_x *filter) const {
+bool FilterParcelable::WriteFilter(tizen_base::Parcel* parcel,
+ pkgmgrinfo_filter_x* filter) const {
if (filter == nullptr) {
parcel->WriteBool(true);
return true;
WriteInt(parcel, filter->uid);
WriteInt(parcel, g_slist_length(filter->list));
- for (GSList *list = filter->list; list; list = list->next)
- WritePkgmgrInfoNode(parcel, reinterpret_cast<pkgmgrinfo_node_x *>(list->data));
+ for (GSList* list = filter->list; list; list = list->next)
+ WritePkgmgrInfoNode(parcel,
+ reinterpret_cast<pkgmgrinfo_node_x*>(list->data));
WriteInt(parcel, g_slist_length(filter->list_metadata));
- for (GSList *list = filter->list_metadata; list; list = list->next)
- WritePkgmgrInfoMetadataNode(parcel,
- reinterpret_cast<pkgmgrinfo_metadata_node_x *>(list->data));
+ for (GSList* list = filter->list_metadata; list; list = list->next)
+ WritePkgmgrInfoMetadataNode(
+ parcel, reinterpret_cast<pkgmgrinfo_metadata_node_x*>(list->data));
+
+ WriteInt(parcel, g_slist_length(filter->list_pkg_metadata));
+ for (GSList* list = filter->list_pkg_metadata; list; list = list->next)
+ WritePkgmgrInfoMetadataNode(
+ parcel, reinterpret_cast<pkgmgrinfo_metadata_node_x*>(list->data));
return true;
}
void FilterParcelable::ReadFilter(tizen_base::Parcel* parcel) {
bool is_null = false;
int val = 0;
- if (parcel->ReadBool(&is_null) != TIZEN_ERROR_NONE)
- return;
- if (is_null)
+ if (parcel->ReadBool(&is_null) != TIZEN_ERROR_NONE || is_null)
return;
- filter_ = reinterpret_cast<pkgmgrinfo_filter_x *>(
+ filter_ = reinterpret_cast<pkgmgrinfo_filter_x*>(
calloc(1, sizeof(pkgmgrinfo_filter_x)));
+
ReadInt(parcel, &val);
filter_->uid = val;
ReadInt(parcel, &val);
for (int i = 0; i < val; ++i)
- filter_->list_metadata = g_slist_append(filter_->list_metadata, ReadPkgmgrInfoMetadataNode(parcel));
+ filter_->list_metadata = g_slist_append(filter_->list_metadata,
+ ReadPkgmgrInfoMetadataNode(parcel));
+
+ ReadInt(parcel, &val);
+ for (int i = 0; i < val; ++i)
+ filter_->list_pkg_metadata = g_slist_append(filter_->list_pkg_metadata,
+ ReadPkgmgrInfoMetadataNode(parcel));
}
-bool FilterParcelable::WritePkgmgrInfoNode(tizen_base::Parcel* parcel, pkgmgrinfo_node_x *node) const {
+bool FilterParcelable::WritePkgmgrInfoNode(tizen_base::Parcel* parcel,
+ pkgmgrinfo_node_x* node) const {
WriteInt(parcel, node->prop);
WriteString(parcel, node->key);
WriteString(parcel, node->value);
return true;
}
-pkgmgrinfo_node_x *FilterParcelable::ReadPkgmgrInfoNode(tizen_base::Parcel *parcel) {
- pkgmgrinfo_node_x *node = reinterpret_cast<pkgmgrinfo_node_x *>(calloc(1, sizeof(pkgmgrinfo_node_x)));
+pkgmgrinfo_node_x* FilterParcelable::ReadPkgmgrInfoNode(
+ tizen_base::Parcel* parcel) {
+ pkgmgrinfo_node_x* node = reinterpret_cast<pkgmgrinfo_node_x*>(
+ calloc(1, sizeof(pkgmgrinfo_node_x)));
ReadInt(parcel, &node->prop);
ReadString(parcel, &node->key);
ReadString(parcel, &node->value);
return node;
}
-bool FilterParcelable::WritePkgmgrInfoMetadataNode(tizen_base::Parcel* parcel, pkgmgrinfo_metadata_node_x *node) const {
+bool FilterParcelable::WritePkgmgrInfoMetadataNode(
+ tizen_base::Parcel* parcel, pkgmgrinfo_metadata_node_x* node) const {
WriteString(parcel, node->key);
WriteString(parcel, node->value);
return true;
}
-pkgmgrinfo_metadata_node_x *FilterParcelable::ReadPkgmgrInfoMetadataNode(tizen_base::Parcel* parcel) {
- pkgmgrinfo_metadata_node_x *node = reinterpret_cast<pkgmgrinfo_metadata_node_x *>(calloc(1, sizeof(pkgmgrinfo_metadata_node_x)));
+pkgmgrinfo_metadata_node_x* FilterParcelable::ReadPkgmgrInfoMetadataNode(
+ tizen_base::Parcel* parcel) {
+ pkgmgrinfo_metadata_node_x* node =
+ reinterpret_cast<pkgmgrinfo_metadata_node_x*>(
+ calloc(1, sizeof(pkgmgrinfo_metadata_node_x)));
ReadString(parcel, &node->key);
ReadString(parcel, &node->value);
return node;
}
-std::unique_ptr<AbstractParcelable> FilterParcelable::Factory::CreateParcel() {
- return nullptr;
-}
-
} // namespace parcel
} // namespace pkgmgr_common