X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/1c3da8681b394ce3b14fb44e27cb682c045d5f92..d3914e4821cb9a186ec4c0a01d052fa5bcf48c9c:/messages.cpp?ds=sidebyside diff --git a/messages.cpp b/messages.cpp index 025871a..fd19f6b 100644 --- a/messages.cpp +++ b/messages.cpp @@ -8,24 +8,33 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(comm); #include "messages.h" +message::message(message_type t, double a, double c) + : type(t), amount(a) , credit(c) +{ + // compute message size + // arbitrary: 8 for type, and 8 for each double + switch (type) { + case CTRL: + size = opt::bookkeeping ? 24 : 16; // type + amount + (credit)? + break; + case DATA: + size = 16 + opt::comm_cost(amount); // type + amount + data size + break; + default: + size = 8; // type + break; + } +} + std::string message::to_string() { - static const char* str[] = { "INFO", "CREDIT", "LOAD", - "CTRL_CLOSE", "DATA_CLOSE" }; + static const char* str[DATA_CLOSE + 1] = { "CTRL", "DATA", + "CTRL_CLOSE", "DATA_CLOSE" }; std::ostringstream oss; oss << str[type] << ": " << amount; return oss.str(); } -double message::get_size() const -{ - // arbitrary: 8 for type, and 8 for amount - double size = 16; - if (type == LOAD) - size += opt::comm_cost(amount); - return size; -} - void message_queue::push(m_task_t task) { if (queue.push(task)) {