#include "xbt/log.h"
#include "src/msg/msg_private.h"
-#include "src/msg/msg_mailbox.h"
#include "simgrid/s4u/comm.hpp"
s4u::Comm &s4u::Comm::send_init(s4u::Actor *sender, s4u::Mailbox &chan) {
s4u::Comm *res = new s4u::Comm();
- res->p_sender = sender;
- res->p_mailbox = &chan;
+ res->sender_ = sender;
+ res->mailbox_ = &chan;
return *res;
}
s4u::Comm &s4u::Comm::recv_init(s4u::Actor *receiver, s4u::Mailbox &chan) {
s4u::Comm *res = new s4u::Comm();
- res->p_receiver = receiver;
- res->p_mailbox = &chan;
+ res->receiver_ = receiver;
+ res->mailbox_ = &chan;
return *res;
}
void s4u::Comm::setRate(double rate) {
xbt_assert(p_state==inited);
- p_rate = rate;
+ rate_ = rate;
}
void s4u::Comm::setSrcData(void * buff) {
xbt_assert(p_state==inited);
- xbt_assert(p_dstBuff == NULL, "Cannot set the src and dst buffers at the same time");
- p_srcBuff = buff;
+ xbt_assert(dstBuff_ == NULL, "Cannot set the src and dst buffers at the same time");
+ srcBuff_ = buff;
}
void s4u::Comm::setSrcDataSize(size_t size){
xbt_assert(p_state==inited);
- p_srcBuffSize = size;
+ srcBuffSize_ = size;
}
void s4u::Comm::setSrcData(void * buff, size_t size) {
xbt_assert(p_state==inited);
- xbt_assert(p_dstBuff == NULL, "Cannot set the src and dst buffers at the same time");
- p_srcBuff = buff;
- p_srcBuffSize = size;
+ xbt_assert(dstBuff_ == NULL, "Cannot set the src and dst buffers at the same time");
+ srcBuff_ = buff;
+ srcBuffSize_ = size;
}
void s4u::Comm::setDstData(void ** buff) {
xbt_assert(p_state==inited);
- xbt_assert(p_srcBuff == NULL, "Cannot set the src and dst buffers at the same time");
- p_dstBuff = buff;
+ xbt_assert(srcBuff_ == NULL, "Cannot set the src and dst buffers at the same time");
+ dstBuff_ = buff;
}
size_t s4u::Comm::getDstDataSize(){
xbt_assert(p_state==finished);
- return p_dstBuffSize;
+ return dstBuffSize_;
}
void s4u::Comm::setDstData(void ** buff, size_t size) {
xbt_assert(p_state==inited);
- xbt_assert(p_srcBuff == NULL, "Cannot set the src and dst buffers at the same time");
- p_dstBuff = buff;
- p_dstBuffSize = size;
+ xbt_assert(srcBuff_ == NULL, "Cannot set the src and dst buffers at the same time");
+ dstBuff_ = buff;
+ dstBuffSize_ = size;
}
void s4u::Comm::start() {
xbt_assert(p_state == inited);
- if (p_srcBuff != NULL) { // Sender side
- p_inferior = simcall_comm_isend(p_sender->getInferior(), p_mailbox->getInferior(), p_remains, p_rate,
- p_srcBuff, p_srcBuffSize,
- p_matchFunction, p_cleanFunction, p_copyDataFunction,
- p_userData, p_detached);
- } else if (p_dstBuff != NULL) { // Receiver side
- p_inferior = simcall_comm_irecv(p_receiver->getInferior(), p_mailbox->getInferior(), p_dstBuff, &p_dstBuffSize,
- p_matchFunction, p_copyDataFunction,
- p_userData, p_rate);
+ if (srcBuff_ != NULL) { // Sender side
+ p_inferior = simcall_comm_isend(sender_->getInferior(), mailbox_->getInferior(), p_remains, rate_,
+ srcBuff_, srcBuffSize_,
+ matchFunction_, cleanFunction_, copyDataFunction_,
+ p_userData, detached_);
+ } else if (dstBuff_ != NULL) { // Receiver side
+ p_inferior = simcall_comm_irecv(receiver_->getInferior(), mailbox_->getInferior(), dstBuff_, &dstBuffSize_,
+ matchFunction_, copyDataFunction_,
+ p_userData, rate_);
} else {
xbt_die("Cannot start a communication before specifying whether we are the sender or the receiver");
if (p_state == started)
simcall_comm_wait(p_inferior, -1/*timeout*/);
else {// p_state == inited. Save a simcall and do directly a blocking send/recv
- if (p_srcBuff != NULL) {
- simcall_comm_send(p_sender->getInferior(), p_mailbox->getInferior(), p_remains, p_rate,
- p_srcBuff, p_srcBuffSize,
- p_matchFunction, p_copyDataFunction,
+ if (srcBuff_ != NULL) {
+ simcall_comm_send(sender_->getInferior(), mailbox_->getInferior(), p_remains, rate_,
+ srcBuff_, srcBuffSize_,
+ matchFunction_, copyDataFunction_,
p_userData, -1 /*timeout*/);
} else {
- simcall_comm_recv(p_receiver->getInferior(), p_mailbox->getInferior(), p_dstBuff, &p_dstBuffSize,
- p_matchFunction, p_copyDataFunction,
- p_userData, -1/*timeout*/, p_rate);
+ simcall_comm_recv(receiver_->getInferior(), mailbox_->getInferior(), dstBuff_, &dstBuffSize_,
+ matchFunction_, copyDataFunction_,
+ p_userData, -1/*timeout*/, rate_);
}
}
p_state = finished;
}
// It's not started yet. Do it in one simcall
- if (p_srcBuff != NULL) {
- simcall_comm_send(p_sender->getInferior(), p_mailbox->getInferior(), p_remains, p_rate,
- p_srcBuff, p_srcBuffSize,
- p_matchFunction, p_copyDataFunction,
+ if (srcBuff_ != NULL) {
+ simcall_comm_send(sender_->getInferior(), mailbox_->getInferior(), p_remains, rate_,
+ srcBuff_, srcBuffSize_,
+ matchFunction_, copyDataFunction_,
p_userData, timeout);
} else { // Receiver
- simcall_comm_recv(p_receiver->getInferior(), p_mailbox->getInferior(), p_dstBuff, &p_dstBuffSize,
- p_matchFunction, p_copyDataFunction,
- p_userData, timeout, p_rate);
+ simcall_comm_recv(receiver_->getInferior(), mailbox_->getInferior(), dstBuff_, &dstBuffSize_,
+ matchFunction_, copyDataFunction_,
+ p_userData, timeout, rate_);
}
p_state = finished;
}
s4u::Comm &res = s4u::Comm::send_init(sender, dest);
res.setRemains(simulatedSize);
- res.p_srcBuff = data;
- res.p_srcBuffSize = sizeof(void*);
+ res.srcBuff_ = data;
+ res.srcBuffSize_ = sizeof(void*);
res.start();
return res;