return oss.str();
}
-const int communicator::send_count_before_flush = 4;
+int communicator::send_count_before_flush = 4;
communicator::communicator()
: host((hostdata* )MSG_host_get_data(MSG_host_self()))
#include <msg/msg.h>
#include "hostdata.h"
+// Cannot include "options.h" without error, so only declare the
+// needed functions.
+namespace opt {
+ bool parse_args(int* argc, char* argv[]);
+ void print();
+ void usage();
+}
+
class message {
public:
enum message_type { INFO, CREDIT, LOAD, CTRL_CLOSE, DATA_CLOSE };
// List of pending send communications
std::list<msg_comm_t> sent_comm;
- static const int send_count_before_flush;
+ static int send_count_before_flush;
int send_counter;
// Queue of received messages
// Used to test if a communication is over, and to destroy it if it is
static bool comm_test_n_destroy(msg_comm_t comm);
+
+ // Make opt::* functions our friends to provide them an access to
+ // send_count_before_flush
+ friend bool opt::parse_args(int*, char* []);
+ friend void opt::print();
+ friend void opt::usage();
};
#endif // !COMMUNICATOR_H
int c;
opterr = 0;
- while ((c = getopt(*argc, argv, "a:bc:C:ehi:I:l:L:N:T:vV")) != -1) {
+ while ((c = getopt(*argc, argv, "a:bc:C:ehi:I:l:L:N:s:T:vV")) != -1) {
switch (c) {
case 'a':
opt::loba_algo = optarg;
case 'N':
std::istringstream(optarg) >> opt::auto_depl::nhosts;
break;
+ case 's':
+ std::istringstream(optarg) >> communicator::send_count_before_flush;
+ break;
case 'T':
opt::auto_depl::topology = optarg;
result = opt_helper::nol_find_prefix(opt::topologies, "topology",
DESCR("maximum number of lb. iterations", "%s",
h.val_or_string(lb_maxiter, "infinity"));
DESCR("exit on close", "%s", h.on_off(exit_on_close));
+ DESCR("send count before flush", "%d",
+ communicator::send_count_before_flush);
INFO0("`----");
#undef DESCR
<< " proc : messages from base process class\n"
<< " loba : messages from load-balancer\n";
+ std::clog << "\nMiscellaneous low-level parameters\n";
+ std::clog << o("-s count")
+ << "check for finished comm. every `count' send operation"
+ << " (" << communicator::send_count_before_flush << ")\n";
+
#undef so_list
#undef so
#undef o