Ejemplo n.º 1
0
void ast_ari_bridges_set_video_source(struct ast_variable *headers,
	struct ast_ari_bridges_set_video_source_args *args, struct ast_ari_response *response)
{
	struct ast_bridge *bridge;
	struct stasis_app_control *control;

	bridge = find_bridge(response, args->bridge_id);
	if (!bridge) {
		return;
	}

	control = find_channel_control(response, args->channel_id);
	if (!control) {
		ao2_ref(bridge, -1);
		return;
	}

	if (stasis_app_get_bridge(control) != bridge) {
		ast_ari_response_error(response, 422,
			"Unprocessable Entity",
			"Channel not in this bridge");
		ao2_ref(bridge, -1);
		ao2_ref(control, -1);
		return;
	}

	stasis_app_send_command(control, bridge_set_video_source_cb,
		ao2_bump(bridge), __ao2_cleanup);

	ao2_ref(bridge, -1);
	ao2_ref(control, -1);

	ast_ari_response_no_content(response);
}
Ejemplo n.º 2
0
int stasis_app_control_remove_channel_from_bridge(
	struct stasis_app_control *control, struct ast_bridge *bridge)
{
	int *res;
	ast_debug(3, "%s: Sending channel remove_from_bridge command\n",
			stasis_app_control_get_channel_id(control));
	res = stasis_app_send_command(control,
		app_control_remove_channel_from_bridge, bridge);
	return *res;
}
Ejemplo n.º 3
0
int stasis_app_control_answer(struct stasis_app_control *control)
{
	int retval;

	ast_debug(3, "%s: Sending answer command\n",
		stasis_app_control_get_channel_id(control));

	retval = stasis_app_send_command(control, app_control_answer, NULL);

	if (retval != 0) {
		ast_log(LOG_WARNING, "%s: Failed to answer channel\n",
			stasis_app_control_get_channel_id(control));
		return -1;
	}

	return 0;
}