Skip to content

Commit

Permalink
Factoring out common serialization code for parcel
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas Heller committed Sep 13, 2016
1 parent 3cd6eb7 commit 4d85b39
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 17 deletions.
1 change: 1 addition & 0 deletions hpx/runtime/parcelset/parcel.hpp
Expand Up @@ -353,6 +353,7 @@ namespace hpx { namespace parcelset

// serialization support
friend class hpx::serialization::access;
void load_data(serialization::input_archive & ar);
void serialize(serialization::input_archive & ar, unsigned);
void serialize(serialization::output_archive & ar, unsigned);

Expand Down
25 changes: 8 additions & 17 deletions src/runtime/parcelset/parcel.cpp
Expand Up @@ -109,21 +109,7 @@ namespace hpx { namespace parcelset
void parcel::load_schedule(serialization::input_archive & ar,
std::size_t num_thread)
{
using hpx::serialization::detail::polymorphic_id_factory;

ar >> data_;
ar >> cont_;

std::uint32_t id;
ar >> id;
#if !defined(HPX_DEBUG)
action_.reset(polymorphic_id_factory::create<actions::base_action>(id));
#else
std::string name;
ar >> name;
action_.reset(
polymorphic_id_factory::create<actions::base_action>(id, &name));
#endif
load_data(ar);
// make sure this parcel destination matches the proper locality
HPX_ASSERT(destination_locality() == data_.addr_.locality_);

Expand Down Expand Up @@ -201,14 +187,14 @@ namespace hpx { namespace parcelset
}
}

void parcel::serialize(serialization::input_archive & ar, unsigned)
void parcel::load_data(serialization::input_archive & ar)
{
using hpx::serialization::detail::polymorphic_id_factory;

ar >> data_;
ar >> cont_;
std::uint32_t id;
ar >> id;

#if !defined(HPX_DEBUG)
action_.reset(polymorphic_id_factory::create<actions::base_action>(id));
#else
Expand All @@ -217,6 +203,11 @@ namespace hpx { namespace parcelset
action_.reset(
polymorphic_id_factory::create<actions::base_action>(id, &name));
#endif
}

void parcel::serialize(serialization::input_archive & ar, unsigned)
{
load_data(ar);
ar >> *action_;
}

Expand Down

0 comments on commit 4d85b39

Please sign in to comment.