Пример #1
0
static struct mi_root* mi_trigger_scenario(struct mi_root* cmd, void* param)
{
	struct mi_node* node= NULL;
	str* args[B2B_INIT_MAX_PARAMNO];
	int i = 0;
	str scenario_name;

	node = cmd->node.kids;
	if(node == NULL)
		return 0;

	b2bl_caller = CALLER_MI;
	/* Get scenario ID */
	scenario_name = node->value;
	if(scenario_name.s == NULL || scenario_name.len== 0)
	{
		LM_ERR("Empty scenario name parameter\n");
		return init_mi_tree(404, "Empty scenario ID", 16);
	}
	node = node->next;

	memset(args, 0, B2B_INIT_MAX_PARAMNO* sizeof(str*));
	/* get the other parameters */
	while(i < B2B_INIT_MAX_PARAMNO && node)
	{
		if(node->value.s == NULL || node->value.len== 0)
			break;

		args[i++] = &node->value;

		node = node->next;
	}

	if(b2bl_bridge_extern(&scenario_name, args, 0, 0) == 0)
	{
		LM_ERR("Failed to initialize scenario\n");
		return 0;
	}
	return init_mi_tree(200, "OK", 2);
}
Пример #2
0
mi_response_t *mi_trigger_scenario(const mi_params_t *params,
								struct mi_handler *async_hdl)
{
	str args[MAX_SCENARIO_PARAMS];
	str* argsp[MAX_SCENARIO_PARAMS];
	str scenario_name;
	int i = 0, no_args;
	mi_item_t *params_arr;

	if (get_mi_string_param(params, "scenario_id",
		&scenario_name.s, &scenario_name.len) < 0)
		return init_mi_param_error();

	if (get_mi_array_param(params, "scenario_params", &params_arr, &no_args) < 0)
		return init_mi_param_error();

	b2bl_caller = CALLER_MI;

	memset(args, 0, MAX_SCENARIO_PARAMS * sizeof(str));
	memset(argsp, 0, MAX_SCENARIO_PARAMS * sizeof(str*));

	for (i = 0; i < no_args; i++) {
		if (get_mi_arr_param_string(params_arr, i,
			&args[i].s, &args[i].len) < 0)
			return init_mi_param_error();
		argsp[i] = &args[i];
	}

	if(b2bl_bridge_extern(&scenario_name, argsp, 0, 0) == 0)
	{
		LM_ERR("Failed to initialize scenario\n");
		return 0;
	}

	return init_mi_result_ok();
}