double rate_ = -1; /* Capping for network resource, or -1 for no capping*/
bool is_used_ = false; /* Indicates whether the task is used in SIMIX currently */
- explicit Task(std::string name, double flops_amount, double bytes_amount, void* data);
- explicit Task(std::string name, std::vector<s4u::Host*> hosts, std::vector<double> flops_amount,
- std::vector<double> bytes_amount, void* data);
+ explicit Task(const std::string& name, double flops_amount, double bytes_amount, void* data);
+ explicit Task(const std::string& name, std::vector<s4u::Host*>&& hosts, std::vector<double>&& flops_amount,
+ std::vector<double>&& bytes_amount, void* data);
void report_multiple_use() const;
public:
- static Task* create(std::string name, double flops_amount, double bytes_amount, void* data);
- static Task* create_parallel(std::string name, int host_nb, const msg_host_t* host_list, double* flops_amount,
+ static Task* create(const std::string& name, double flops_amount, double bytes_amount, void* data);
+ static Task* create_parallel(const std::string& name, int host_nb, const msg_host_t* host_list, double* flops_amount,
double* bytes_amount, void* data);
msg_error_t execute();
- msg_error_t send(std::string alias, double timeout);
- s4u::CommPtr send_async(std::string alias, void_f_pvoid_t cleanup, bool detached);
+ msg_error_t send(const std::string& alias, double timeout);
+ s4u::CommPtr send_async(const std::string& alias, void_f_pvoid_t cleanup, bool detached);
void cancel();
};
class Comm {
+ msg_error_t status_ = MSG_OK; /* status of the communication once finished */
public:
Task* task_sent; /* task sent (NULL for the receiver) */
Task** task_received; /* where the task will be received (NULL for the sender) */
s4u::CommPtr s_comm; /* SIMIX communication object encapsulated (the same for both processes) */
- msg_error_t status = MSG_OK; /* status of the communication once finished */
Comm(msg_task_t sent, msg_task_t* received, s4u::CommPtr comm)
: task_sent(sent), task_received(received), s_comm(std::move(comm))
{
}
+ bool test();
+ msg_error_t wait_for(double timeout);
+ void set_status(msg_error_t status) { status_ = status; }
+ msg_error_t get_status() { return status_; }
};
class ActorUserData {
} // namespace simgrid
/************************** Global variables ********************************/
-struct s_MSG_Global_t {
- bool debug_multiple_use; /* whether we want an error message when reusing the same Task for 2 things */
+struct MSG_Global_t {
+ static bool debug_multiple_use; /* whether we want an error message when reusing the same Task for 2 things */
std::atomic_int_fast32_t sent_msg; /* Total amount of messages sent during the simulation */
void (*task_copy_callback)(msg_task_t task, msg_process_t src, msg_process_t dst);
void_f_pvoid_t process_data_cleanup;
};
-typedef s_MSG_Global_t* MSG_Global_t;
-XBT_PUBLIC_DATA MSG_Global_t msg_global;
+XBT_PUBLIC_DATA MSG_Global_t* msg_global;
/*************************************************************/
XBT_PRIVATE void MSG_comm_copy_data_from_SIMIX(simgrid::kernel::activity::CommImpl* comm, void* buff, size_t buff_size);