#include #include #include "stats.h" #include "event.h" /* also defines host_* classes */ #include "strategy.h" #include "myrand.h" const long simlength = 10000000L; int main(int argc, char **argv) { if (argc != 5) { fprintf(stderr, "usage: %s nspewers npeerpairs nclientserverpairs strategy\n", argv[0]); return 1; } switch (atoi(argv[4])) { case 1: event::set_strategy(new strategy1); break; case 2: event::set_strategy(new strategy2); break; case 3: event::set_strategy(new strategy3); break; case 4: event::set_strategy(new strategy4); break; case 5: event::set_strategy(new strategy5); break; default: fprintf(stderr, "%s: strategy must be between 1 and 5 inclusive\n", argv[0]); return 1; } myrand::seed(); new event_quit(simlength); // inserts itself into the queue for (int i = atoi(argv[1]); i > 0; i--) new host_spewer; // inserts itself into the queue, as do the others: for (int i = atoi(argv[2]); i > 0; i--) new host_peer_pair; for (int i = atoi(argv[3]); i > 0; i--) new host_client_server; while (1) event::process_one(); // calls exit() upon reaching the quit event }