void on_adv_info_riuc(adv_server_t *adv_server, adv_request_t *request, char *caddr_str) { node_t *node = adv_server->user_data; int i; void *found = NULL; int idx; int *pidx; for (i = 0; i < MAX_NODE; i++) { SHOW_LOG(3, "LIST TABLE\n"); ht_list_item(&node[i].group_table); SHOW_LOG(3, "=========== NODE :%s ========\n", node[i].id); found = node_in_group(&node[i], "OIUC-FEDORA"); SHOW_LOG(3, "node_id: %s, adv_owner:%s, found:%d \n", node[i].id, "OIUC-FEDORA", found); found = node_in_group(&node[i], "OIUC-UBUNTU"); SHOW_LOG(3, "node_id: %s, adv_owner:%s, found:%d \n", node[i].id, "OIUC-UBUNTU", found); SHOW_LOG(3, "=============================\n"); } for (i = 0; i < MAX_NODE; i++) { found = node_in_group(&node[i], request->adv_info.adv_owner); if (found != NULL) { SHOW_LOG(3, "New session: %s(%s:%d)\n", request->adv_info.adv_owner, request->adv_info.sdp_mip, request->adv_info.sdp_port); if(!node_has_media(&node[i])) { SHOW_LOG(1, "Node does not have media endpoints configured\n"); return; } pidx = (int *)ht_get_item(&node[i].group_table, request->adv_info.adv_owner); if (pidx != NULL) { idx = *pidx; //idx = *((int *)ht_get_item(&node[i].group_table, request->adv_info.adv_owner); SHOW_LOG(3, "idx(ht_get_item): %d for owner: %s\n", idx, request->adv_info.adv_owner); #if 1 if( request->adv_info.sdp_port > 0 ) { receiver_stop(node[i].receiver, idx); //for (i = 0; i < node->receiver->nstreams; i++) { receiver_config_stream(node[i].receiver, request->adv_info.sdp_mip, request->adv_info.sdp_port, idx); //} receiver_start(node[i].receiver); riuc4_on_ptt(&riuc_data.riuc4, node[i].radio_port); } else { receiver_stop(node[i].receiver, idx); riuc4_off_ptt(&riuc_data.riuc4, node[i].radio_port); } usleep(250*1000); } #endif } } }
int main(int argc, char **argv) { int option_index = 0; if (argc < 2) { show_help(argv); return EXIT_FAILURE; } gru_status_t status = gru_status_new(); options_t *options = options_new(&status); if (!options) { fprintf(stderr, "Unable to create options object: %s", status.message); return EXIT_FAILURE; } set_options_object(options); gru_logger_set(gru_logger_default_printer); while (1) { static struct option long_options[] = {{"broker-url", required_argument, 0, 'b'}, {"duration", required_argument, 0, 'd'}, {"log-level", required_argument, 0, 'l'}, {"log-dir", required_argument, 0, 'L'}, {"parallel-count", required_argument, 0, 'p'}, {"message-size", required_argument, 0, 's'}, {"help", no_argument, 0, 'h'}, {0, 0, 0, 0}}; int c = getopt_long(argc, argv, "b:d:l:L:p:s:h", long_options, &option_index); if (c == -1) { break; } switch (c) { case 'b': if (!options_set_broker_uri(options, optarg, &status)) { fprintf(stderr, "%s\n", status.message); goto err_exit_0; } break; case 'd': if (!options_set_duration(options, optarg)) { fprintf(stderr, "Invalid duration: %s\n", optarg); goto err_exit_0; } break; case 'l': options_set_log_level(options, optarg); break; case 'p': options_set_parallel_count(options, optarg); break; case 's': options_set_message_size(options, optarg); break; case 'L': if (!options_set_logdir(options, optarg)) { fprintf(stderr, "Unable to allocate memory for setting the log directory\n"); goto err_exit_0; } break; case 'h': show_help(argv); options_destroy(&options); return EXIT_SUCCESS; default: printf("Invalid or missing option\n"); show_help(argv); options_destroy(&options); return EXIT_FAILURE; } } if (options_get_log_dir()) { remap_log_with_link(options_get_log_dir(), "mpt-receiver", 0, getpid(), stderr, &status); } else { if (options_get_parallel_count() > 1) { fprintf(stderr, "Multiple concurrent process require a log directory\n"); goto err_exit_0; } } logger_t logger = gru_logger_get(); vmsl_t vmsl = vmsl_init(); const gru_uri_t broker_uri = options_get_broker_uri(); if (!vmsl_assign_by_url(&broker_uri, &vmsl)) { goto err_exit_1; } logger(GRU_INFO, "Starting test"); if (receiver_start(&vmsl, options) == 0) { logger(GRU_INFO, "Test execution with process ID %d finished successfully\n", getpid()); options_destroy(&options); return EXIT_SUCCESS; } err_exit_1: logger(GRU_INFO, "Test execution with process ID %d finished with errors\n", getpid()); err_exit_0: options_destroy(&options); return EXIT_FAILURE; }