+s4u::Actor* Group::actor(int rank)
+{
+ if (0 <= rank && rank < size_)
+ return rank_to_actor_map_[rank];
+ else
+ return nullptr;
+}
+
+int Group::rank(s4u::Actor* actor)
+{
+ auto iterator = actor_to_rank_map_.find(actor);
+ //I'm not in the communicator ... but maybe my parent is ?
+ if (iterator == actor_to_rank_map_.end())
+ iterator = actor_to_rank_map_.find(s4u::Actor::by_pid(actor->get_ppid()).get());
+ return (iterator == actor_to_rank_map_.end()) ? MPI_UNDEFINED : (*iterator).second;
+}
+