static
void destroy_message_event(struct bt_message *msg,
- struct bt_graph *graph)
+ struct bt_graph *graph __attribute__((unused)))
{
bt_message_event_destroy(msg);
}
static
void destroy_message_packet_begin(struct bt_message *msg,
- struct bt_graph *graph)
+ struct bt_graph *graph __attribute__((unused)))
{
bt_message_packet_destroy(msg);
}
static
void destroy_message_packet_end(struct bt_message *msg,
- struct bt_graph *graph)
+ struct bt_graph *graph __attribute__((unused)))
{
bt_message_packet_destroy(msg);
}
bt_message_unlink_graph(msg);
}
+BT_EXPORT
struct bt_graph *bt_graph_create(uint64_t mip_version)
{
struct bt_graph *graph;
int ret;
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE(mip_version <= bt_get_maximal_mip_version(),
+ BT_ASSERT_PRE("valid-mip-version",
+ mip_version <= bt_get_maximal_mip_version(),
"Unknown MIP version: mip-version=%" PRIu64 ", "
"max-mip-version=%" PRIu64,
mip_version, bt_get_maximal_mip_version());
goto end;
}
+BT_EXPORT
enum bt_graph_connect_ports_status bt_graph_connect_ports(
struct bt_graph *graph,
const struct bt_port_output *upstream_port_out,
bool init_can_consume;
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE_NON_NULL(upstream_port, "Upstream port");
- BT_ASSERT_PRE_NON_NULL(downstream_port, "Downstream port port");
- BT_ASSERT_PRE(
+ BT_ASSERT_PRE_GRAPH_NON_NULL(graph);
+ BT_ASSERT_PRE_NON_NULL("upstream-port", upstream_port, "Upstream port");
+ BT_ASSERT_PRE_NON_NULL("downstream-port", downstream_port,
+ "Downstream port port");
+ BT_ASSERT_PRE("graph-is-not-configured",
graph->config_state == BT_GRAPH_CONFIGURATION_STATE_CONFIGURING,
"Graph is not in the \"configuring\" state: %!+g", graph);
- BT_ASSERT_PRE(!bt_port_is_connected(upstream_port),
+ BT_ASSERT_PRE("upstream-port-is-not-connected",
+ !bt_port_is_connected(upstream_port),
"Upstream port is already connected: %!+p", upstream_port);
- BT_ASSERT_PRE(!bt_port_is_connected(downstream_port),
+ BT_ASSERT_PRE("downstream-port-is-not-connected",
+ !bt_port_is_connected(downstream_port),
"Downstream port is already connected: %!+p", downstream_port);
- BT_ASSERT_PRE(bt_port_borrow_component_inline((void *) upstream_port),
+ BT_ASSERT_PRE("upstream-port-has-component",
+ bt_port_borrow_component_inline((void *) upstream_port),
"Upstream port does not belong to a component: %!+p",
upstream_port);
- BT_ASSERT_PRE(bt_port_borrow_component_inline((void *) downstream_port),
+ BT_ASSERT_PRE("downstream-port-has-component",
+ bt_port_borrow_component_inline((void *) downstream_port),
"Downstream port does not belong to a component: %!+p",
downstream_port);
init_can_consume = graph->can_consume;
return status;
}
+#define CONSUME_METHOD_NAME "bt_component_class_sink_consume_method"
+
static inline
int consume_graph_sink(struct bt_component_sink *comp)
{
consume_status = sink_class->methods.consume((void *) comp);
BT_LOGD("User method returned: status=%s",
bt_common_func_status_string(consume_status));
- BT_ASSERT_POST_DEV(consume_status == BT_FUNC_STATUS_OK ||
+ BT_ASSERT_POST_DEV(CONSUME_METHOD_NAME, "valid-status",
+ consume_status == BT_FUNC_STATUS_OK ||
consume_status == BT_FUNC_STATUS_END ||
consume_status == BT_FUNC_STATUS_AGAIN ||
consume_status == BT_FUNC_STATUS_ERROR ||
consume_status == BT_FUNC_STATUS_MEMORY_ERROR,
"Invalid component status returned by consuming method: "
"status=%s", bt_common_func_status_string(consume_status));
- BT_ASSERT_POST_DEV_NO_ERROR_IF_NO_ERROR_STATUS(consume_status);
+ BT_ASSERT_POST_DEV_NO_ERROR_IF_NO_ERROR_STATUS(CONSUME_METHOD_NAME,
+ consume_status);
if (consume_status) {
if (consume_status < 0) {
BT_LIB_LOGW_APPEND_CAUSE(
return status;
}
-BT_HIDDEN
int bt_graph_consume_sink_no_check(struct bt_graph *graph,
struct bt_component_sink *sink)
{
}
static inline
-int consume_no_check(struct bt_graph *graph)
+int consume_no_check(struct bt_graph *graph, const char *api_func)
{
int status = BT_FUNC_STATUS_OK;
struct bt_component *sink;
GList *current_node;
- BT_ASSERT_PRE_DEV(graph->has_sink,
+ BT_ASSERT_PRE_DEV_FROM_FUNC(api_func,
+ "graph-has-at-least-one-sink-component", graph->has_sink,
"Graph has no sink component: %!+g", graph);
BT_LIB_LOGD("Making next sink component consume: %![graph-]+g", graph);
return status;
}
+#define GRAPH_IS_CONFIGURED_METHOD_NAME \
+ "bt_component_class_sink_graph_is_configured_method"
+
static
-int configure_graph(struct bt_graph *graph)
+int configure_graph(struct bt_graph *graph, const char *api_func)
{
int status = BT_FUNC_STATUS_OK;
uint64_t i;
goto end;
}
- BT_ASSERT_PRE(graph->has_sink, "Graph has no sink component: %!+g", graph);
+ BT_ASSERT_PRE_FROM_FUNC(api_func,
+ "graph-has-at-least-one-sink-component",
+ graph->has_sink, "Graph has no sink component: %!+g", graph);
graph->config_state = BT_GRAPH_CONFIGURATION_STATE_PARTIALLY_CONFIGURED;
for (i = 0; i < graph->components->len; i++) {
(void *) comp_sink);
BT_LIB_LOGD("User method returned: status=%s",
bt_common_func_status_string(comp_status));
- BT_ASSERT_POST(comp_status == BT_FUNC_STATUS_OK ||
+ BT_ASSERT_POST(GRAPH_IS_CONFIGURED_METHOD_NAME,
+ "valid-status",
+ comp_status == BT_FUNC_STATUS_OK ||
comp_status == BT_FUNC_STATUS_ERROR ||
comp_status == BT_FUNC_STATUS_MEMORY_ERROR,
"Unexpected returned status: status=%s",
bt_common_func_status_string(comp_status));
- BT_ASSERT_POST_NO_ERROR_IF_NO_ERROR_STATUS(comp_status);
+ BT_ASSERT_POST_NO_ERROR_IF_NO_ERROR_STATUS(
+ GRAPH_IS_CONFIGURED_METHOD_NAME, comp_status);
if (comp_status != BT_FUNC_STATUS_OK) {
if (comp_status < 0) {
BT_LIB_LOGW_APPEND_CAUSE(
return status;
}
+BT_EXPORT
enum bt_graph_run_once_status bt_graph_run_once(struct bt_graph *graph)
{
enum bt_graph_run_once_status status;
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_DEV_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE_DEV(graph->can_consume,
+ BT_ASSERT_PRE_DEV_GRAPH_NON_NULL(graph);
+ BT_ASSERT_PRE_DEV("graph-can-consume", graph->can_consume,
"Cannot consume graph in its current state: %!+g", graph);
- BT_ASSERT_PRE_DEV(graph->config_state !=
- BT_GRAPH_CONFIGURATION_STATE_FAULTY,
+ BT_ASSERT_PRE_DEV("graph-is-not-faulty",
+ graph->config_state != BT_GRAPH_CONFIGURATION_STATE_FAULTY,
"Graph is in a faulty state: %!+g", graph);
bt_graph_set_can_consume(graph, false);
- status = configure_graph(graph);
+ status = configure_graph(graph, __func__);
if (G_UNLIKELY(status)) {
/* configure_graph() logs errors */
goto end;
}
- status = consume_no_check(graph);
+ status = consume_no_check(graph, __func__);
bt_graph_set_can_consume(graph, true);
end:
return status;
}
+BT_EXPORT
enum bt_graph_run_status bt_graph_run(struct bt_graph *graph)
{
enum bt_graph_run_status status;
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE(graph->can_consume,
+ BT_ASSERT_PRE_GRAPH_NON_NULL(graph);
+ BT_ASSERT_PRE("graph-can-consume", graph->can_consume,
"Cannot consume graph in its current state: %!+g", graph);
- BT_ASSERT_PRE(graph->config_state != BT_GRAPH_CONFIGURATION_STATE_FAULTY,
+ BT_ASSERT_PRE("graph-is-not-faulty",
+ graph->config_state != BT_GRAPH_CONFIGURATION_STATE_FAULTY,
"Graph is in a faulty state: %!+g", graph);
bt_graph_set_can_consume(graph, false);
- status = configure_graph(graph);
+ status = configure_graph(graph, __func__);
if (G_UNLIKELY(status)) {
/* configure_graph() logs errors */
goto end;
goto end;
}
- status = consume_no_check(graph);
+ status = consume_no_check(graph, __func__);
if (G_UNLIKELY(status == BT_FUNC_STATUS_AGAIN)) {
/*
* If AGAIN is received and there are multiple
return status;
}
+BT_EXPORT
enum bt_graph_add_listener_status
bt_graph_add_source_component_output_port_added_listener(
struct bt_graph *graph,
bt_listener_id listener_id;
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE_NON_NULL(func, "Listener");
+ BT_ASSERT_PRE_GRAPH_NON_NULL(graph);
+ BT_ASSERT_PRE_LISTENER_FUNC_NON_NULL(func);
g_array_append_val(graph->listeners.source_output_port_added, listener);
listener_id = graph->listeners.source_output_port_added->len - 1;
BT_LIB_LOGD("Added \"source component output port added\" listener to graph: "
return BT_FUNC_STATUS_OK;
}
+BT_EXPORT
enum bt_graph_add_listener_status
bt_graph_add_filter_component_output_port_added_listener(
struct bt_graph *graph,
bt_listener_id listener_id;
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE_NON_NULL(func, "Listener");
+ BT_ASSERT_PRE_GRAPH_NON_NULL(graph);
+ BT_ASSERT_PRE_LISTENER_FUNC_NON_NULL(func);
g_array_append_val(graph->listeners.filter_output_port_added, listener);
listener_id = graph->listeners.filter_output_port_added->len - 1;
BT_LIB_LOGD("Added \"filter component output port added\" listener to graph: "
return BT_FUNC_STATUS_OK;
}
+BT_EXPORT
enum bt_graph_add_listener_status
bt_graph_add_filter_component_input_port_added_listener(
struct bt_graph *graph,
bt_listener_id listener_id;
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE_NON_NULL(func, "Listener");
+ BT_ASSERT_PRE_GRAPH_NON_NULL(graph);
+ BT_ASSERT_PRE_LISTENER_FUNC_NON_NULL(func);
g_array_append_val(graph->listeners.filter_input_port_added, listener);
listener_id = graph->listeners.filter_input_port_added->len - 1;
BT_LIB_LOGD("Added \"filter component input port added\" listener to graph: "
return BT_FUNC_STATUS_OK;
}
+BT_EXPORT
enum bt_graph_add_listener_status
bt_graph_add_sink_component_input_port_added_listener(
struct bt_graph *graph,
bt_listener_id listener_id;
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE_NON_NULL(func, "Listener");
+ BT_ASSERT_PRE_GRAPH_NON_NULL(graph);
+ BT_ASSERT_PRE_LISTENER_FUNC_NON_NULL(func);
g_array_append_val(graph->listeners.sink_input_port_added, listener);
listener_id = graph->listeners.sink_input_port_added->len - 1;
BT_LIB_LOGD("Added \"sink component input port added\" listener to graph: "
return BT_FUNC_STATUS_OK;
}
-BT_HIDDEN
enum bt_graph_listener_func_status bt_graph_notify_port_added(
struct bt_graph *graph, struct bt_port *port)
{
GArray *listeners;
struct bt_component *comp;
enum bt_graph_listener_func_status status = BT_FUNC_STATUS_OK;
+ const char *func_name;
BT_ASSERT(graph);
BT_ASSERT(port);
switch (port->type) {
case BT_PORT_TYPE_OUTPUT:
listeners = graph->listeners.source_output_port_added;
+ func_name = "bt_graph_source_component_output_port_added_listener_func";
break;
default:
bt_common_abort();
switch (port->type) {
case BT_PORT_TYPE_INPUT:
listeners = graph->listeners.filter_input_port_added;
+ func_name = "bt_graph_filter_component_input_port_added_listener_func";
break;
case BT_PORT_TYPE_OUTPUT:
listeners = graph->listeners.filter_output_port_added;
+ func_name = "bt_graph_filter_component_output_port_added_listener_func";
break;
default:
bt_common_abort();
switch (port->type) {
case BT_PORT_TYPE_INPUT:
listeners = graph->listeners.sink_input_port_added;
+ func_name = "bt_graph_sink_component_input_port_added_listener_func";
break;
default:
bt_common_abort();
for (i = 0; i < listeners->len; i++) {
struct bt_graph_listener_port_added *listener =
- &g_array_index(listeners,
+ &bt_g_array_index(listeners,
struct bt_graph_listener_port_added, i);
BT_ASSERT(listener->func);
status = listener->func(comp, port, listener->data);
- BT_ASSERT_POST_NO_ERROR_IF_NO_ERROR_STATUS(status);
+ BT_ASSERT_POST_NO_ERROR_IF_NO_ERROR_STATUS(func_name, status);
if (status != BT_FUNC_STATUS_OK) {
goto end;
}
return status;
}
-BT_HIDDEN
void bt_graph_remove_connection(struct bt_graph *graph,
struct bt_connection *connection)
{
comp_init_method_t init_method,
const char *name, const struct bt_value *params,
void *init_method_data, bt_logging_level log_level,
- const struct bt_component **user_component)
+ const struct bt_component **user_component,
+ const char *api_func,
+ const char *init_method_name)
{
int status = BT_FUNC_STATUS_OK;
enum bt_component_class_initialize_method_status init_status;
struct bt_value *new_params = NULL;
BT_ASSERT(comp_cls);
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE_NON_NULL(name, "Name");
- BT_ASSERT_PRE(
+ BT_ASSERT_PRE_GRAPH_NON_NULL_FROM_FUNC(api_func, graph);
+ BT_ASSERT_PRE_NAME_NON_NULL_FROM_FUNC(api_func, name);
+ BT_ASSERT_PRE_FROM_FUNC(api_func, "graph-is-not-configured",
graph->config_state == BT_GRAPH_CONFIGURATION_STATE_CONFIGURING,
"Graph is not in the \"configuring\" state: %!+g", graph);
- BT_ASSERT_PRE(!component_name_exists(graph, name),
+ BT_ASSERT_PRE_FROM_FUNC(api_func, "component-name-is-unique",
+ !component_name_exists(graph, name),
"Duplicate component name: %!+g, name=\"%s\"", graph, name);
- BT_ASSERT_PRE(!params || bt_value_is_map(params),
- "Parameter value is not a map value: %!+v", params);
+ BT_ASSERT_PRE_PARAM_VALUE_IS_MAP_FROM_FUNC(api_func, params);
init_can_consume = graph->can_consume;
bt_graph_set_can_consume(graph, false);
BT_LIB_LOGI("Adding component to graph: "
init_status = init_method(component, NULL, params, init_method_data);
BT_LOGD("User method returned: status=%s",
bt_common_func_status_string(init_status));
- BT_ASSERT_POST_DEV_NO_ERROR_IF_NO_ERROR_STATUS(init_status);
+ BT_ASSERT_POST_DEV_NO_ERROR_IF_NO_ERROR_STATUS(init_method_name,
+ init_status);
if (init_status != BT_FUNC_STATUS_OK) {
if (init_status < 0) {
BT_LIB_LOGW_APPEND_CAUSE(
return status;
}
+static
enum bt_graph_add_component_status
-bt_graph_add_source_component_with_initialize_method_data(
+add_source_component_with_initialize_method_data(
struct bt_graph *graph,
const struct bt_component_class_source *comp_cls,
const char *name, const struct bt_value *params,
void *init_method_data, bt_logging_level log_level,
- const struct bt_component_source **component)
+ const struct bt_component_source **component,
+ const char *api_func)
{
- BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class");
+ BT_ASSERT_PRE_NO_ERROR_FROM_FUNC(api_func);
+ BT_ASSERT_PRE_COMP_CLS_NON_NULL_FROM_FUNC(api_func, comp_cls);
return add_component_with_init_method_data(graph,
(void *) comp_cls, (comp_init_method_t) comp_cls->methods.init,
- name, params, init_method_data, log_level, (void *) component);
+ name, params, init_method_data, log_level, (void *) component,
+ api_func, "bt_component_class_source_initialize_method");
}
+BT_EXPORT
+enum bt_graph_add_component_status
+bt_graph_add_source_component_with_initialize_method_data(
+ struct bt_graph *graph,
+ const struct bt_component_class_source *comp_cls,
+ const char *name, const struct bt_value *params,
+ void *init_method_data, bt_logging_level log_level,
+ const struct bt_component_source **component)
+{
+ return add_source_component_with_initialize_method_data(graph, comp_cls,
+ name, params, init_method_data, log_level, component, __func__);
+}
+
+BT_EXPORT
enum bt_graph_add_component_status bt_graph_add_source_component(
struct bt_graph *graph,
const struct bt_component_class_source *comp_cls,
enum bt_logging_level log_level,
const struct bt_component_source **component)
{
- BT_ASSERT_PRE_NO_ERROR();
- return bt_graph_add_source_component_with_initialize_method_data(
- graph, comp_cls, name, params, NULL, log_level, component);
+ return add_source_component_with_initialize_method_data(graph, comp_cls,
+ name, params, NULL, log_level, component, __func__);
}
+static
enum bt_graph_add_component_status
-bt_graph_add_filter_component_with_initialize_method_data(
+add_filter_component_with_initialize_method_data(
struct bt_graph *graph,
const struct bt_component_class_filter *comp_cls,
const char *name, const struct bt_value *params,
- void *init_method_data, enum bt_logging_level log_level,
- const struct bt_component_filter **component)
+ void *init_method_data, bt_logging_level log_level,
+ const struct bt_component_filter **component,
+ const char *api_func)
{
- BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class");
+ BT_ASSERT_PRE_NO_ERROR_FROM_FUNC(api_func);
+ BT_ASSERT_PRE_COMP_CLS_NON_NULL_FROM_FUNC(api_func, comp_cls);
return add_component_with_init_method_data(graph,
(void *) comp_cls, (comp_init_method_t) comp_cls->methods.init,
- name, params, init_method_data, log_level, (void *) component);
+ name, params, init_method_data, log_level, (void *) component,
+ api_func, "bt_component_class_filter_initialize_method");
}
+BT_EXPORT
+enum bt_graph_add_component_status
+bt_graph_add_filter_component_with_initialize_method_data(
+ struct bt_graph *graph,
+ const struct bt_component_class_filter *comp_cls,
+ const char *name, const struct bt_value *params,
+ void *init_method_data, bt_logging_level log_level,
+ const struct bt_component_filter **component)
+{
+ return add_filter_component_with_initialize_method_data(graph, comp_cls,
+ name, params, init_method_data, log_level, component, __func__);
+}
+
+BT_EXPORT
enum bt_graph_add_component_status bt_graph_add_filter_component(
struct bt_graph *graph,
const struct bt_component_class_filter *comp_cls,
enum bt_logging_level log_level,
const struct bt_component_filter **component)
{
- BT_ASSERT_PRE_NO_ERROR();
- return bt_graph_add_filter_component_with_initialize_method_data(
- graph, comp_cls, name, params, NULL, log_level, component);
+ return add_filter_component_with_initialize_method_data(graph, comp_cls,
+ name, params, NULL, log_level, component, __func__);
}
+static
enum bt_graph_add_component_status
-bt_graph_add_sink_component_with_initialize_method_data(
+add_sink_component_with_initialize_method_data(
struct bt_graph *graph,
const struct bt_component_class_sink *comp_cls,
const char *name, const struct bt_value *params,
- void *init_method_data, enum bt_logging_level log_level,
- const struct bt_component_sink **component)
+ void *init_method_data, bt_logging_level log_level,
+ const struct bt_component_sink **component,
+ const char *api_func)
{
- BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class");
+ BT_ASSERT_PRE_NO_ERROR_FROM_FUNC(api_func);
+ BT_ASSERT_PRE_COMP_CLS_NON_NULL_FROM_FUNC(api_func, comp_cls);
return add_component_with_init_method_data(graph,
(void *) comp_cls, (comp_init_method_t) comp_cls->methods.init,
- name, params, init_method_data, log_level, (void *) component);
+ name, params, init_method_data, log_level, (void *) component,
+ api_func, "bt_component_class_sink_initialize_method");
+}
+
+BT_EXPORT
+enum bt_graph_add_component_status
+bt_graph_add_sink_component_with_initialize_method_data(
+ struct bt_graph *graph,
+ const struct bt_component_class_sink *comp_cls,
+ const char *name, const struct bt_value *params,
+ void *init_method_data, bt_logging_level log_level,
+ const struct bt_component_sink **component)
+{
+ return add_sink_component_with_initialize_method_data(graph, comp_cls,
+ name, params, init_method_data, log_level, component,
+ __func__);
}
+BT_EXPORT
enum bt_graph_add_component_status bt_graph_add_sink_component(
struct bt_graph *graph,
const struct bt_component_class_sink *comp_cls,
enum bt_logging_level log_level,
const struct bt_component_sink **component)
{
- BT_ASSERT_PRE_NO_ERROR();
- return bt_graph_add_sink_component_with_initialize_method_data(
- graph, comp_cls, name, params, NULL, log_level, component);
+ return add_sink_component_with_initialize_method_data(graph, comp_cls,
+ name, params, NULL, log_level, component, __func__);
}
+BT_EXPORT
enum bt_graph_add_component_status
bt_graph_add_simple_sink_component(struct bt_graph *graph, const char *name,
bt_graph_simple_sink_component_initialize_func init_func,
/*
* Other preconditions are checked by
- * bt_graph_add_sink_component_with_init_method_data().
+ * add_sink_component_with_initialize_method_data().
*/
- BT_ASSERT_PRE_NON_NULL(consume_func, "Consume function");
+ BT_ASSERT_PRE_NON_NULL("consume-function", consume_func,
+ "Consume function");
comp_cls = bt_component_class_sink_simple_borrow();
if (!comp_cls) {
goto end;
}
- status = bt_graph_add_sink_component_with_initialize_method_data(graph,
+ status = add_sink_component_with_initialize_method_data(graph,
comp_cls, name, NULL, &init_method_data,
- BT_LOGGING_LEVEL_NONE, component);
+ BT_LOGGING_LEVEL_NONE, component, __func__);
end:
return status;
}
-BT_HIDDEN
void bt_graph_add_message(struct bt_graph *graph,
struct bt_message *msg)
{
g_ptr_array_add(graph->messages, msg);
}
-BT_HIDDEN
bool bt_graph_is_interrupted(const struct bt_graph *graph)
{
BT_ASSERT_DBG(graph);
return bt_interrupter_array_any_is_set(graph->interrupters);
}
+BT_EXPORT
enum bt_graph_add_interrupter_status bt_graph_add_interrupter(
struct bt_graph *graph, const struct bt_interrupter *intr)
{
BT_ASSERT_PRE_NO_ERROR();
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
- BT_ASSERT_PRE_NON_NULL(intr, "Interrupter");
+ BT_ASSERT_PRE_GRAPH_NON_NULL(graph);
+ BT_ASSERT_PRE_INTR_NON_NULL(intr);
g_ptr_array_add(graph->interrupters, (void *) intr);
bt_object_get_ref_no_null_check(intr);
BT_LIB_LOGD("Added interrupter to graph: %![graph-]+g, %![intr-]+z",
return BT_FUNC_STATUS_OK;
}
+BT_EXPORT
struct bt_interrupter *bt_graph_borrow_default_interrupter(bt_graph *graph)
{
- BT_ASSERT_PRE_NON_NULL(graph, "Graph");
+ BT_ASSERT_PRE_GRAPH_NON_NULL(graph);
return graph->default_interrupter;
}
+BT_EXPORT
void bt_graph_get_ref(const struct bt_graph *graph)
{
bt_object_get_ref(graph);
}
+BT_EXPORT
void bt_graph_put_ref(const struct bt_graph *graph)
{
bt_object_put_ref(graph);