Beispiel #1
0
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
        }
    }
}
Beispiel #2
0
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;
}