int main(int argc, char *argv[]) { //int i; int r; char *stream_name = NULL; char *hab_type; char *hab_id; char *node_id; char *stream_id; int c; bionet_log_use_default_handler(NULL); while(1) { int i = 0; static struct option long_options[] = { {"help", 0, 0, 'h'}, {"version", 0, 0, 'v'}, {"bandwidth-limit", 1, 0, 'b'}, {0, 0, 0, 0} //this must be last in the list }; c = getopt_long(argc, argv, "b:hv?", long_options, &i); if (c == -1) { break; } switch (c) { case 'h': case '?': usage(); return 0; case 'v': version(); return 0; case 'b': bandwidth_limit = strtoul(optarg, NULL, 10); break; default: fprintf(stderr, "Incorrect usage.\n\n"); usage(); return -1; } } if (argc > 1) { stream_name = argv[argc-1]; } bionet_fd = bionet_connect(); if (bionet_fd < 0) { fprintf(stderr, "error connecting to Bionet\n"); exit(1); } fprintf(stderr, "connected to Bionet\n"); // if no stream name was specified, we just list all the streams as they come and goo if (stream_name == NULL) list_streams(); // if we get here, we're going to connect to a stream r = bionet_split_resource_name(stream_name, &hab_type, &hab_id, &node_id, &stream_id); if (r != 0) exit(1); // we need to subscribe to the node-list so we discover the Stream, so we can learn if it's a Producer or Consumer { char node_name[(3 * BIONET_NAME_COMPONENT_MAX_LEN) + 3]; int r; r = snprintf(node_name, sizeof(node_name), "%s.%s.%s", hab_type, hab_id, node_id); if ((r >= sizeof(node_name)) || (r < 5)) { fprintf(stderr, "error making node name for node-list subscription\n"); exit(1); } bionet_subscribe_node_list_by_name(node_name); } while (1) { bionet_stream_t *stream; bionet_read_with_timeout(NULL); stream = bionet_cache_lookup_stream(hab_type, hab_id, node_id, stream_id); if (stream == NULL) continue; deal_with_stream(stream); // wont return } exit(0); }
int main (int argc, char * argv[]) { struct roar_connection con; char * server = NULL; char * k = NULL; int i; int t = 0; for (i = 1; i < argc; i++) { k = argv[i]; if ( strcmp(k, "--server") == 0 ) { server = argv[++i]; } else if ( strcmp(k, "-v") == 0 || strcmp(k, "--verbose") == 0 ) { g_verbose++; } else if ( strcmp(k, "--help") == 0 ) { usage(); return 0; } else if ( strcmp(k, "--list-aiprofiles") == 0 ) { list_aiprofiles(); return 0; } else if ( strcmp(k, "--enum-servers") == 0 ) { enum_servers(); return 0; } else if ( *k == '-' ) { fprintf(stderr, "Error: unknown argument: %s\n", k); usage(); return 1; } else { break; } } // connect if ( roar_simple_connect(&con, server, "roarctl") == -1 ) { fprintf(stderr, "Error: Can not connect to server\n"); return 1; } if ( i == argc ) { fprintf(stderr, "Error: No Commands given\n"); return 0; // this is not a fatal error... } for (; i < argc; i++) { k = argv[i]; // cmd is in k printf("--- [ %s ] ---\n", k); if ( !strcmp(k, "help") ) { usage(); } else if ( !strcmp(k, "sleep") ) { sleep(atoi(argv[++i])); } else if ( !strcmp(k, "ping") ) { #ifdef ROAR_HAVE_GETTIMEOFDAY if ( ping(&con, atoi(argv[++i])) == -1 ) { fprintf(stderr, "Error: can not ping\n"); } #else fprintf(stderr, "Error: ping not supported.\n"); i++; #endif } else if ( !strcmp(k, "standby") || !strcmp(k, "off") ) { if ( roar_set_standby(&con, ROAR_STANDBY_ACTIVE) == -1 ) { fprintf(stderr, "Error: can not set mode to standby\n"); } else { printf("going into standby\n"); } } else if ( !strcmp(k, "resume") || !strcmp(k, "on") ) { if ( roar_set_standby(&con, ROAR_STANDBY_INACTIVE) == -1 ) { fprintf(stderr, "Error: can not set mode to active\n"); } else { printf("going into active mode\n"); } } else if ( !strcmp(k, "exit") ) { if ( roar_terminate(&con, 0) == -1 ) { fprintf(stderr, "Error: can not quit server\n"); } else { printf("Server quited\n"); break; } } else if ( !strcmp(k, "terminate") ) { if ( roar_terminate(&con, 1) == -1 ) { fprintf(stderr, "Error: can not terminate server\n"); } else { printf("Server got asked to quited\n"); break; } } else if ( !strcmp(k, "standbymode") ) { t = roar_get_standby(&con); if ( t == -1 ) { fprintf(stderr, "Error: can not get stanby mode\n"); } else if ( t == ROAR_STANDBY_ACTIVE ) { printf("Server is in standby\n"); } else if ( t == ROAR_STANDBY_INACTIVE ) { printf("Server is active\n"); } else { fprintf(stderr, "Error: unknown standby mode: %i\n", t); } } else if ( !strcmp(k, "whoami") ) { printf("My client ID is: %i\n", roar_get_clientid(&con)); } else if ( !strcmp(k, "serverinfo") ) { server_info(&con); } else if ( !strcmp(k, "serveroinfo") ) { server_oinfo(&con); } else if ( !strcmp(k, "serverstandards") ) { server_standards(&con); } else if ( !strcmp(k, "listclients") ) { list_clients(&con); } else if ( !strcmp(k, "liststreams") ) { list_streams(&con); } else if ( !strcmp(k, "allinfo") ) { server_oinfo(&con); printf("\n"); list_clients(&con); printf("\n"); list_streams(&con); } else if ( !strcmp(k, "kick") ) { t = roar_str2ot((k = argv[++i])); if ( t == -1 ) { fprintf(stderr, "Error: unknown type: %s\n", k); continue; } //t = atoi(argv[i++]); if ( roar_kick(&con, t, atoi(argv[++i])) == -1 ) { fprintf(stderr, "Error: can not kick %s\n", k); } else { printf("%s kicked\n", k); } } else if ( !strcmp(k, "newvirtual") ) { if ( newvirtual(&con, argv[i+1], argv[i+2], argv[i+3], argv[i+4], argv[i+5], argv[i+6]) == -1 ) { fprintf(stderr, "Error: can not create new virtual stream\n"); } else { printf("virtual stream created\n"); } i += 6; } else if ( !strcmp(k, "volume") ) { if ( set_mixer(&con, &i, argc, argv) == -1 ) { fprintf(stderr, "Error: can not set volume\n"); } else { printf("volume changed\n"); } } else if ( !strcmp(k, "flag") ) { i++; if ( set_flags(&con, atoi(argv[i]), ROAR_SET_FLAG, argv[i+1]) == -1 ) { fprintf(stderr, "Error: can not set flags\n"); } else { printf("flags changed\n"); } i++; } else if ( !strcmp(k, "unflag") ) { i++; if ( set_flags(&con, atoi(argv[i]), ROAR_RESET_FLAG, argv[i+1]) == -1 ) { fprintf(stderr, "Error: can not reset flags\n"); } else { printf("flags changed\n"); } i++; } else if ( !strcmp(k, "metaset") ) { i++; if ( set_meta(&con, atoi(argv[i]), argv[i+1], argv[i+2], argv[i+3]) == -1 ) { fprintf(stderr, "Error: can not set meta data\n"); } else { printf("meta data changed\n"); } i += 3; } else if ( !strcmp(k, "metaget") ) { i++; if ( show_meta_type(&con, atoi(argv[i]), argv[i+1]) == -1 ) { fprintf(stderr, "Error: can not get meta data\n"); } i++; } else if ( !strcmp(k, "metasave") ) { i++; if ( save_meta(&con, atoi(argv[i]), argv[i+1]) == -1 ) { fprintf(stderr, "Error: can not get meta data\n"); } else { printf("meta data saved\n"); } i++; } else if ( !strcmp(k, "metaload") ) { i++; if ( load_meta(&con, atoi(argv[i]), argv[i+1]) == -1 ) { fprintf(stderr, "Error: can not set meta data\n"); } else { printf("meta data saved\n"); } i++; } else if ( !strcmp(k, "listaiprofiles") || !strcmp(k, "listprofiles") ) { if ( list_aiprofiles() == -1 ) { fprintf(stderr, "Error: can not list profiles\n"); } } else if ( !strcmp(k, "aiprofileget") || !strcmp(k, "profileget") ) { i++; if ( show_aiprofile(argv[i]) == -1 ) { fprintf(stderr, "Error: can not get profile data\n"); } } else { fprintf(stderr, "Error: invalid command: %s\n", k); } } roar_disconnect(&con); return 0; }