#ifndef NEIGHBOR_H
#define NEIGHBOR_H
-#include <limits>
-#include <string>
+#include <utility>
+#include <xbt/log.h>
+#include "hostdata.h"
class neighbor {
public:
neighbor(const char* hostname);
~neighbor();
- const char* get_name() const { return name.c_str(); }
- const char* get_ctrl_mbox() const { return ctrl_mbox.c_str(); }
- const char* get_data_mbox() const { return data_mbox.c_str(); }
+ // returns name, ctrl or data mbox
+ const char* get_name() const { return host->get_name(); }
+ const char* get_ctrl_mbox() const { return host->get_ctrl_mbox(); }
+ const char* get_data_mbox() const { return host->get_data_mbox(); }
- double get_load() const { return load; }
- void set_load(double l) { load = l; }
+ // Getter and setter for load
+ double get_load() const { return load; }
+ void set_load(double amount) { load = amount; }
+ void add_load(double amount) { load += amount; }
- double get_debt() const { return debt; }
- void set_debt(double d) { debt = d; }
+ // Getter and setter for debt
+ double get_debt() const { return debt; }
+ void set_debt(double amount) { debt = amount; }
+
+ // Getter and setter for to_send
+ double get_to_send() const { return to_send; }
+ void set_to_send(double amount) { to_send = amount; }
+ void add_to_send(double amount) { to_send += amount; }
+
+ // Prints its name and load on given category, with given
+ // priority. If verbose is true, prints debt and to_send too.
+ void print(bool verbose = false,
+ e_xbt_log_priority_t logp = xbt_log_priority_info,
+ xbt_log_category_t cat = _XBT_LOGV(default)) const;
private:
- std::string name;
- std::string ctrl_mbox;
- std::string data_mbox;
+ const hostdata* host; // pointer to this neighbor's hostdata
+
+ double load; // the load information we know for it
+ double debt; // the load we had to send to it, but
+ // that we have not currently sent
+ // (in bookkeeping mode)
- double load;
- double debt;
+ double to_send; // the load we have to send to it
};
#endif // !NEIGHBOR_H