- pattern->type = simgrid::mc::PatternCommunicationType::send;
- pattern->comm_addr = simcall_comm_isend__get__result(request);
-
- simgrid::mc::Remote<simgrid::kernel::activity::Comm> temp_synchro;
- mc_model_checker->process().read(temp_synchro, remote(
- static_cast<simgrid::kernel::activity::Comm*>(pattern->comm_addr)));
- simgrid::kernel::activity::Comm* synchro =
- static_cast<simgrid::kernel::activity::Comm*>(temp_synchro.getBuffer());
-
- char* remote_name = mc_model_checker->process().read<char*>(
- (std::uint64_t)(synchro->mbox ? &synchro->mbox->name_ : &synchro->mbox_cpy->name_));
- pattern->rdv = mc_model_checker->process().read_string(remote_name);
- pattern->src_proc = mc_model_checker->process().resolveActor(simgrid::mc::remote(synchro->src_proc))->pid;
- pattern->src_host = MC_smx_actor_get_host_name(issuer);
-
- simgrid::smpi::Request mpi_request =
- mc_model_checker->process().read<simgrid::smpi::Request>(
- (std::uint64_t) simcall_comm_isend__get__data(request));
- pattern->tag = mpi_request.tag();
-
- if (synchro->src_buff != nullptr){
- pattern->data.resize(synchro->src_buff_size);
- mc_model_checker->process().read_bytes(
- pattern->data.data(), pattern->data.size(),
- remote(synchro->src_buff));
- }
- if(mpi_request.detached()){
- if (!this->initial_communications_pattern_done) {
- /* Store comm pattern */
- simgrid::mc::PatternCommunicationList* list = xbt_dynar_get_as(
- initial_communications_pattern, pattern->src_proc,
- simgrid::mc::PatternCommunicationList*);
- list->list.push_back(std::move(pattern));
- } else {
+ pattern->type = PatternCommunicationType::send;
+ pattern->comm_addr = mcapi::get().get_comm_isend_raw_addr(request);
+ pattern->rdv = mcapi::get().get_pattern_comm_rdv(pattern->comm_addr);
+ pattern->src_proc = mcapi::get().get_pattern_comm_src_proc(pattern->comm_addr);
+ pattern->src_host = mc_api::get().get_actor_host_name(issuer);
+
+#if HAVE_SMPI
+ pattern->tag = mcapi::get().get_smpi_request_tag(request, simgrid::simix::Simcall::COMM_ISEND);
+#endif
+ pattern->data = mcapi::get().get_pattern_comm_data(pattern->comm_addr);
+
+#if HAVE_SMPI
+ auto send_detached = mcapi::get().check_send_request_detached(request);
+ if (send_detached) {
+ if (this->initial_communications_pattern_done) {