int main(int argc, const char * argv[]) { printf("Usage: tcpserver [debugflags] " "(see o2.h for flags, use a for all)\n"); if (argc == 2) { o2_debug_flags(argv[1]); printf("debug flags are: %s\n", argv[1]); } if (argc > 2) { printf("WARNING: tcpserver ignoring extra command line argments\n"); } o2_initialize("test"); o2_service_new("server"); // add our handler for incoming messages to each server address for (int i = 0; i < N_ADDRS; i++) { char path[100]; sprintf(path, "/server/benchmark/%d", i); o2_method_new(path, "i", &server_test, NULL, FALSE, TRUE); } // create an address for each destination so we do not have to // do string manipulation to send a message for (int i = 0; i < N_ADDRS; i++) { char path[100]; sprintf(path, "!client/benchmark/%d", i); client_addresses[i] = (char *) (O2_MALLOC(strlen(path))); strcpy(client_addresses[i], path); } // we are the master clock o2_clock_set(NULL, NULL); // wait for client service to be discovered while (o2_status("client") < O2_LOCAL) { o2_poll(); usleep(2000); // 2ms } printf("We discovered the client at time %g.\n", o2_time_get()); // delay 1 second double now = o2_time_get(); while (o2_time_get() < now + 1) { o2_poll(); usleep(2000); } printf("Here we go! ...\ntime is %g.\n", o2_time_get()); while (running) { o2_poll(); } o2_finish(); sleep(1); // clean up sockets printf("SERVER DONE\n"); return 0; }
int main(int argc, const char * argv[]) { o2_initialize("test"); o2_add_service("server"); // add our handler for incoming messages to each server address for (int i = 0; i < N_ADDRS; i++) { char path[100]; sprintf(path, "/server/benchmark/%d", i); o2_add_method(path, "i", &server_test, NULL, FALSE, FALSE); } // create an address for each destination so we do not have to // do string manipulation to send a message for (int i = 0; i < N_ADDRS; i++) { char path[100]; sprintf(path, "!client/benchmark/%d", i); client_addresses[i] = (char *) O2_MALLOC(strlen(path)); strcpy(client_addresses[i], path); } // we are the master clock o2_set_clock(NULL, NULL); // wait for client service to be discovered while (o2_status("client") < O2_LOCAL) { o2_poll(); usleep(2000); // 2ms } printf("We discovered the client at time %g.\n", o2_get_time()); // delay 5 seconds double now = o2_get_time(); while (o2_get_time() < now + 5) { o2_poll(); usleep(2000); } printf("Here we go! ...\ntime is %g.\n", o2_get_time()); while (TRUE) { o2_poll(); //usleep(2000); // 2ms // as fast as possible } o2_finish(); return 0; }
int main(int argc, const char * argv[]) { o2_initialize("test"); o2_add_service("client"); for (int i = 0; i < N_ADDRS; i++) { char path[100]; sprintf(path, "/client/benchmark/%d", i); o2_add_method(path, "i", &client_test, NULL, FALSE, FALSE); } for (int i = 0; i < N_ADDRS; i++) { char path[100]; sprintf(path, "!server/benchmark/%d", i); server_addresses[i] = (char *) O2_MALLOC(strlen(path)); strcpy(server_addresses[i], path); } while (o2_status("server") < O2_LOCAL) { o2_poll(); usleep(2000); // 2ms } printf("We discovered the server.\ntime is %g.\n", o2_get_time()); double now = o2_get_time(); while (o2_get_time() < now + 5) { o2_poll(); usleep(2000); } printf("Here we go! ...\ntime is %g.\n", o2_get_time()); o2_send("!server/benchmark/0", 0, "i", 0); while (1) { o2_poll(); //usleep(2000); // 2ms // as fast as possible } o2_finish(); return 0; }