#ifndef COMMUNICATOR_H
#define COMMUNICATOR_H
-#include <list>
+#include <vector>
#include <msg/msg.h>
#include "hostdata.h"
#include "messages.h"
-#include "synchro.h"
+#include "msg_thread.h"
class communicator {
public:
// Try to get a message. Returns true on success.
// Parameter "timeout" may be 0 for non-blocking operation, -1 for
// infinite waiting, or any positive timeout.
- bool recv(message*& msg, m_host_t& from, double timeout);
+ bool recv(message*& msg, m_host_t& from, double timeout) {
+ return received.pop(msg, from, timeout);
+ }
private:
// Myself
const hostdata* host;
// List of pending send communications
- std::list<msg_comm_t> sent_comm;
+ typedef std::vector<msg_comm_t> sent_comm_type;
+ sent_comm_type sent_comm;
// Queue of received messages
message_queue received;
// Handling of receiving thread
- mutex_t receiver_mutex;
- condition_t receiver_cond;
- m_process_t receiver_thread;
- static int receiver_wrapper(int, char* []);
+ msg_thread* receiver_thread;
void receiver();
// Used to chek if a communication is successfull before destroying it