* SOFTWARE.
*/
-#define BT_LOG_TAG "GRAPH"
-#include "lib/lib-logging.h"
+#define BT_LOG_TAG "LIB/GRAPH"
+#include "lib/logging.h"
#include "common/assert.h"
#include "lib/assert-pre.h"
+#include "lib/assert-post.h"
#include <babeltrace2/graph/graph.h>
#include <babeltrace2/graph/graph-const.h>
#include <babeltrace2/graph/component-source-const.h>
* step 4 goes from 1 to 2, and from 2 to 1 at step 6. This
* ensures that this function is not called two times.
*/
- BT_LIB_LOGD("Destroying graph: %!+g", graph);
+ BT_LIB_LOGI("Destroying graph: %!+g", graph);
obj->ref_count++;
/*
struct bt_graph *graph;
int ret;
- BT_LOGD_STR("Creating graph object.");
+ BT_LOGI_STR("Creating graph object.");
graph = g_new0(struct bt_graph, 1);
if (!graph) {
BT_LOGE_STR("Failed to allocate one graph.");
graph->messages = g_ptr_array_new_with_free_func(
(GDestroyNotify) notify_message_graph_is_destroyed);
- BT_LIB_LOGD("Created graph object: %!+g", graph);
+ BT_LIB_LOGI("Created graph object: %!+g", graph);
end:
return (void *) graph;
"Downstream port does not belong to a component: %!+p",
downstream_port);
init_can_consume = graph->can_consume;
- BT_LIB_LOGD("Connecting component ports within graph: "
+ BT_LIB_LOGI("Connecting component ports within graph: "
"%![graph-]+g, %![up-port-]+p, %![down-port-]+p",
graph, upstream_port, downstream_port);
bt_graph_set_can_consume(graph, false);
downstream_component = bt_port_borrow_component_inline(
(void *) downstream_port);
- /*
- * At this point the ports are not connected yet. Both
- * components need to accept an eventual connection to their
- * port by the other port before we continue.
- */
- BT_LIB_LOGD("Asking upstream component to accept the connection: "
- "%![comp-]+c", upstream_component);
- component_status = bt_component_accept_port_connection(
- upstream_component, (void *) upstream_port,
- (void *) downstream_port);
- if (component_status != BT_SELF_COMPONENT_STATUS_OK) {
- if (component_status == BT_SELF_COMPONENT_STATUS_REFUSE_PORT_CONNECTION) {
- BT_LOGD_STR("Upstream component refused the connection.");
- } else {
- BT_LOGW("Cannot ask upstream component to accept the connection: "
- "status=%s", bt_self_component_status_string(component_status));
- }
-
- status = (int) component_status;
- goto end;
- }
-
- BT_LIB_LOGD("Asking downstream component to accept the connection: "
- "%![comp-]+c", downstream_component);
- component_status = bt_component_accept_port_connection(
- downstream_component, (void *) downstream_port,
- (void *) upstream_port);
- if (component_status != BT_SELF_COMPONENT_STATUS_OK) {
- if (component_status == BT_SELF_COMPONENT_STATUS_REFUSE_PORT_CONNECTION) {
- BT_LOGD_STR("Downstream component refused the connection.");
- } else {
- BT_LOGW("Cannot ask downstream component to accept the connection: "
- "status=%s", bt_self_component_status_string(component_status));
- }
-
- status = (int) component_status;
- goto end;
- }
-
BT_LOGD_STR("Creating connection.");
connection = bt_connection_create(graph, (void *) upstream_port,
(void *) downstream_port);
}
connection->notified_graph_ports_connected = true;
- BT_LIB_LOGD("Connected component ports within graph: "
+ BT_LIB_LOGI("Connected component ports within graph: "
"%![graph-]+g, %![up-comp-]+c, %![down-comp-]+c, "
"%![up-port-]+p, %![down-port-]+p",
graph, upstream_component, downstream_component,
comp_status = sink_class->methods.consume((void *) comp);
BT_LOGD("User method returned: status=%s",
bt_self_component_status_string(comp_status));
- BT_ASSERT_PRE(comp_status == BT_SELF_COMPONENT_STATUS_OK ||
+ BT_ASSERT_POST(comp_status == BT_SELF_COMPONENT_STATUS_OK ||
comp_status == BT_SELF_COMPONENT_STATUS_END ||
comp_status == BT_SELF_COMPONENT_STATUS_AGAIN ||
comp_status == BT_SELF_COMPONENT_STATUS_ERROR ||
goto end;
}
- BT_LIB_LOGV("Consumed from sink: %![comp-]+c, status=%s",
+ BT_LIB_LOGD("Consumed from sink: %![comp-]+c, status=%s",
comp, bt_self_component_status_string(comp_status));
end:
}
end:
- BT_LIB_LOGV("Consumed sink node: %![comp-]+c, status=%s",
+ BT_LIB_LOGD("Consumed sink node: %![comp-]+c, status=%s",
sink, bt_graph_status_string(status));
return status;
}
GList *sink_node;
int index;
- BT_LIB_LOGV("Making specific sink consume: %![comp-]+c", sink);
+ BT_LIB_LOGD("Making specific sink consume: %![comp-]+c", sink);
BT_ASSERT(bt_component_borrow_graph((void *) sink) == graph);
if (g_queue_is_empty(graph->sinks_to_consume)) {
- BT_LOGV_STR("Graph's sink queue is empty: end of graph.");
+ BT_LOGD_STR("Graph's sink queue is empty: end of graph.");
status = BT_GRAPH_STATUS_END;
goto end;
}
index = g_queue_index(graph->sinks_to_consume, sink);
if (index < 0) {
- BT_LOGV_STR("Sink is not marked as consumable: sink is ended.");
+ BT_LIB_LOGD("Sink component is not marked as consumable: "
+ "component sink is ended: %![comp-]+c", sink);
status = BT_GRAPH_STATUS_END;
goto end;
}
BT_ASSERT_PRE(graph->has_sink,
"Graph has no sink component: %!+g", graph);
- BT_LIB_LOGV("Making next sink consume: %![graph-]+g", graph);
+ BT_LIB_LOGD("Making next sink component consume: %![graph-]+g", graph);
if (G_UNLIKELY(g_queue_is_empty(graph->sinks_to_consume))) {
- BT_LOGV_STR("Graph's sink queue is empty: end of graph.");
+ BT_LOGD_STR("Graph's sink queue is empty: end of graph.");
status = BT_GRAPH_STATUS_END;
goto end;
}
current_node = g_queue_pop_head_link(graph->sinks_to_consume);
sink = current_node->data;
- BT_LIB_LOGV("Chose next sink to consume: %!+c", sink);
+ BT_LIB_LOGD("Chose next sink to consume: %!+c", sink);
status = consume_sink_node(graph, current_node);
end:
goto end;
}
- BT_LIB_LOGV("Running graph: %!+g", graph);
+ BT_LIB_LOGI("Running graph: %!+g", graph);
do {
/*
* it was intentional: log with a DEBUG level only.
*/
if (G_UNLIKELY(graph->canceled)) {
- BT_LIB_LOGD("Stopping the graph: graph is canceled: "
+ BT_LIB_LOGI("Stopping the graph: graph is canceled: "
"%!+g", graph);
status = BT_GRAPH_STATUS_CANCELED;
goto end;
}
end:
- BT_LIB_LOGV("Graph ran: %![graph-]+g, status=%s", graph,
+ BT_LIB_LOGI("Graph ran: %![graph-]+g, status=%s", graph,
bt_graph_status_string(status));
bt_graph_set_can_consume(graph, true);
return status;
"%!+g", graph);
g_array_append_val(graph->listeners.source_output_port_added, listener);
listener_id = graph->listeners.source_output_port_added->len - 1;
- BT_LIB_LOGV("Added \"source component output port added\" listener to graph: "
+ BT_LIB_LOGD("Added \"source component output port added\" listener to graph: "
"%![graph-]+g, listener-addr=%p, id=%d", graph, listener,
listener_id);
"%!+g", graph);
g_array_append_val(graph->listeners.filter_output_port_added, listener);
listener_id = graph->listeners.filter_output_port_added->len - 1;
- BT_LIB_LOGV("Added \"filter component output port added\" listener to graph: "
+ BT_LIB_LOGD("Added \"filter component output port added\" listener to graph: "
"%![graph-]+g, listener-addr=%p, id=%d", graph, listener,
listener_id);
"%!+g", graph);
g_array_append_val(graph->listeners.filter_input_port_added, listener);
listener_id = graph->listeners.filter_input_port_added->len - 1;
- BT_LIB_LOGV("Added \"filter component input port added\" listener to graph: "
+ BT_LIB_LOGD("Added \"filter component input port added\" listener to graph: "
"%![graph-]+g, listener-addr=%p, id=%d", graph, listener,
listener_id);
"%!+g", graph);
g_array_append_val(graph->listeners.sink_input_port_added, listener);
listener_id = graph->listeners.sink_input_port_added->len - 1;
- BT_LIB_LOGV("Added \"sink component input port added\" listener to graph: "
+ BT_LIB_LOGD("Added \"sink component input port added\" listener to graph: "
"%![graph-]+g, listener-addr=%p, id=%d", graph, listener,
listener_id);
g_array_append_val(graph->listeners.source_filter_ports_connected,
listener);
listener_id = graph->listeners.source_filter_ports_connected->len - 1;
- BT_LIB_LOGV("Added \"source to filter component ports connected\" listener to graph: "
+ BT_LIB_LOGD("Added \"source to filter component ports connected\" listener to graph: "
"%![graph-]+g, listener-addr=%p, id=%d", graph, listener,
listener_id);
g_array_append_val(graph->listeners.source_sink_ports_connected,
listener);
listener_id = graph->listeners.source_sink_ports_connected->len - 1;
- BT_LIB_LOGV("Added \"source to sink component ports connected\" listener to graph: "
+ BT_LIB_LOGD("Added \"source to sink component ports connected\" listener to graph: "
"%![graph-]+g, listener-addr=%p, id=%d", graph, listener,
listener_id);
g_array_append_val(graph->listeners.filter_filter_ports_connected,
listener);
listener_id = graph->listeners.filter_filter_ports_connected->len - 1;
- BT_LIB_LOGV("Added \"filter to filter component ports connected\" listener to graph: "
+ BT_LIB_LOGD("Added \"filter to filter component ports connected\" listener to graph: "
"%![graph-]+g, listener-addr=%p, id=%d", graph, listener,
listener_id);
g_array_append_val(graph->listeners.filter_sink_ports_connected,
listener);
listener_id = graph->listeners.filter_sink_ports_connected->len - 1;
- BT_LIB_LOGV("Added \"filter to sink component ports connected\" listener to graph: "
+ BT_LIB_LOGD("Added \"filter to sink component ports connected\" listener to graph: "
"%![graph-]+g, listener-addr=%p, id=%d", graph, listener,
listener_id);
BT_ASSERT(graph);
BT_ASSERT(port);
- BT_LIB_LOGV("Notifying graph listeners that a port was added: "
+ BT_LIB_LOGD("Notifying graph listeners that a port was added: "
"%![graph-]+g, %![port-]+p", graph, port);
comp = bt_port_borrow_component_inline(port);
BT_ASSERT(comp);
BT_ASSERT(graph);
BT_ASSERT(upstream_port);
BT_ASSERT(downstream_port);
- BT_LIB_LOGV("Notifying graph listeners that ports were connected: "
+ BT_LIB_LOGD("Notifying graph listeners that ports were connected: "
"%![graph-]+g, %![up-port-]+p, %![down-port-]+p",
graph, upstream_port, downstream_port);
upstream_comp = bt_port_borrow_component_inline(upstream_port);
BT_ASSERT_PRE_NON_NULL(graph, "Graph");
graph->canceled = true;
- BT_LIB_LOGV("Canceled graph: %!+i", graph);
+ BT_LIB_LOGI("Canceled graph: %!+i", graph);
return BT_GRAPH_STATUS_OK;
}
{
BT_ASSERT(graph);
BT_ASSERT(connection);
- BT_LIB_LOGV("Removing graph's connection: %![graph-]+g, %![conn-]+x",
+ BT_LIB_LOGD("Removing graph's connection: %![graph-]+g, %![conn-]+x",
graph, connection);
g_ptr_array_remove(graph->connections, connection);
}
struct bt_component_class *comp_cls,
comp_init_method_t init_method,
const char *name, const struct bt_value *params,
- void *init_method_data, struct bt_component **user_component)
+ void *init_method_data, bt_logging_level log_level,
+ struct bt_component **user_component)
{
enum bt_graph_status graph_status = BT_GRAPH_STATUS_OK;
enum bt_self_component_status comp_status;
"Parameter value is not a map value: %!+v", params);
init_can_consume = graph->can_consume;
bt_graph_set_can_consume(graph, false);
- BT_LIB_LOGD("Adding component to graph: "
- "%![graph-]+g, %![cc-]+C, name=\"%s\", %![params-]+v, "
- "init-method-data-addr=%p",
- graph, comp_cls, name, params, init_method_data);
+ BT_LIB_LOGI("Adding component to graph: "
+ "%![graph-]+g, %![cc-]+C, name=\"%s\", log-level=%s, "
+ "%![params-]+v, init-method-data-addr=%p",
+ graph, comp_cls, name,
+ bt_common_logging_level_string(log_level), params,
+ init_method_data);
if (!params) {
new_params = bt_value_map_create();
if (!new_params) {
- BT_LOGE_STR("Cannot create map value object.");
+ BT_LOGE_STR("Cannot create empty map value object.");
graph_status = BT_GRAPH_STATUS_NOMEM;
goto end;
}
params = new_params;
}
- ret = bt_component_create(comp_cls, name, &component);
+ ret = bt_component_create(comp_cls, name, log_level, &component);
if (ret) {
BT_LOGE("Cannot create empty component object: ret=%d",
ret);
*/
BT_LOGD_STR("Freezing component class.");
bt_component_class_freeze(comp_cls);
- BT_LIB_LOGD("Added component to graph: "
- "%![graph-]+g, %![cc-]+C, name=\"%s\", %![params-]+v, "
- "init-method-data-addr=%p, %![comp-]+c",
- graph, comp_cls, name, params, init_method_data, component);
+ BT_LIB_LOGI("Added component to graph: "
+ "%![graph-]+g, %![cc-]+C, name=\"%s\", log-level=%s, "
+ "%![params-]+v, init-method-data-addr=%p, %![comp-]+c",
+ graph, comp_cls, name,
+ bt_common_logging_level_string(log_level), params,
+ init_method_data, component);
if (user_component) {
/* Move reference to user */
struct bt_graph *graph,
const struct bt_component_class_source *comp_cls,
const char *name, const struct bt_value *params,
- void *init_method_data,
+ void *init_method_data, bt_logging_level log_level,
const struct bt_component_source **component)
{
BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class");
return add_component_with_init_method_data(graph,
(void *) comp_cls, (comp_init_method_t) comp_cls->methods.init,
- name, params, init_method_data, (void *) component);
+ name, params, init_method_data, log_level, (void *) component);
}
enum bt_graph_status bt_graph_add_source_component(
struct bt_graph *graph,
const struct bt_component_class_source *comp_cls,
const char *name, const struct bt_value *params,
+ bt_logging_level log_level,
const struct bt_component_source **component)
{
return bt_graph_add_source_component_with_init_method_data(
- graph, comp_cls, name, params, NULL, component);
+ graph, comp_cls, name, params, NULL, log_level, component);
}
enum bt_graph_status
struct bt_graph *graph,
const struct bt_component_class_filter *comp_cls,
const char *name, const struct bt_value *params,
- void *init_method_data,
+ void *init_method_data, bt_logging_level log_level,
const struct bt_component_filter **component)
{
BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class");
return add_component_with_init_method_data(graph,
(void *) comp_cls, (comp_init_method_t) comp_cls->methods.init,
- name, params, init_method_data, (void *) component);
+ name, params, init_method_data, log_level, (void *) component);
}
enum bt_graph_status bt_graph_add_filter_component(
struct bt_graph *graph,
const struct bt_component_class_filter *comp_cls,
const char *name, const struct bt_value *params,
+ bt_logging_level log_level,
const struct bt_component_filter **component)
{
return bt_graph_add_filter_component_with_init_method_data(
- graph, comp_cls, name, params, NULL, component);
+ graph, comp_cls, name, params, NULL, log_level, component);
}
enum bt_graph_status
struct bt_graph *graph,
const struct bt_component_class_sink *comp_cls,
const char *name, const struct bt_value *params,
- void *init_method_data,
+ void *init_method_data, bt_logging_level log_level,
const struct bt_component_sink **component)
{
BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class");
return add_component_with_init_method_data(graph,
(void *) comp_cls, (comp_init_method_t) comp_cls->methods.init,
- name, params, init_method_data, (void *) component);
+ name, params, init_method_data, log_level, (void *) component);
}
enum bt_graph_status bt_graph_add_sink_component(
struct bt_graph *graph,
const struct bt_component_class_sink *comp_cls,
const char *name, const struct bt_value *params,
+ bt_logging_level log_level,
const struct bt_component_sink **component)
{
return bt_graph_add_sink_component_with_init_method_data(
- graph, comp_cls, name, params, NULL, component);
+ graph, comp_cls, name, params, NULL, log_level, component);
}
BT_HIDDEN