-
- // It's not started yet. Do it in one simcall
- if (srcBuff_ != nullptr) {
- simcall_comm_send(sender_, mailbox_->getImpl(), remains_, rate_,
- srcBuff_, srcBuffSize_,
- matchFunction_, copyDataFunction_,
- userData_, timeout);
- } else { // Receiver
- simcall_comm_recv(receiver_, mailbox_->getImpl(), dstBuff_, &dstBuffSize_,
- matchFunction_, copyDataFunction_,
- userData_, timeout, rate_);
- }
- state_ = finished;
-}
-
-void Comm::send_detached(MailboxPtr dest, void* data, int simulatedSize)
-{
- s4u::CommPtr res = CommPtr(s4u::Comm::send_init(dest));
- res->setRemains(simulatedSize);
- res->srcBuff_ = data;
- res->srcBuffSize_ = sizeof(void*);
- res->detached_ = true;
- res->start();
-}
-
-s4u::CommPtr Comm::send_async(MailboxPtr dest, void* data, int simulatedSize)
-{
- s4u::CommPtr res = CommPtr(s4u::Comm::send_init(dest));
- res->setRemains(simulatedSize);
- res->srcBuff_ = data;
- res->srcBuffSize_ = sizeof(void*);
- res->start();
- return res;