#include <queue>
#include <string>
-#include <msg/msg.h>
+#include <simgrid/msg.h>
+#include "simgrid_features.h"
#include "synchro.h"
+#include "sync_queue.h"
class message {
public:
- enum message_type { INFO, CREDIT, LOAD, CTRL_CLOSE, DATA_CLOSE };
+ enum class message_type { CTRL, DATA, CTRL_CLOSE, DATA_CLOSE };
- message(message_type t, double a): type(t), amount(a) { }
+ message(message_type t, double a, double c = 0.0);
message_type get_type() const { return type; }
double get_amount() const { return amount; }
- double get_size() const;
+ double get_credit() const { return credit; }
+ double get_size() const { return size; }
std::string to_string();
private:
message_type type;
double amount;
+ double credit;
+ double size;
};
class message_queue {
public:
// Push a message on queue
- void push(m_task_t task);
+ void push(msg_task_t task);
// Try to pop a message. Returns true on success.
// Parameter "timeout" may be 0 for non-blocking operation, -1 for
// infinite waiting, or any positive timeout.
- bool pop(message*& msg, m_host_t& from, double timeout);
+ bool pop(message*& msg, msg_host_t& from, double timeout);
bool empty() const { return queue.empty(); }
size_t size() const { return queue.size(); }
private:
mutex_t mutex;
condition_t cond;
- std::queue<m_task_t> queue;
+ sync_queue<msg_task_t> queue;
};
#endif // !MESSAGES_H