*/
#define BT_LOG_TAG "LIB/COMPONENT"
-#include "lib/lib-logging.h"
+#include "lib/logging.h"
#include "common/common.h"
#include "common/assert.h"
#include "lib/assert-pre.h"
+#include "lib/assert-post.h"
#include <babeltrace2/graph/self-component.h>
#include <babeltrace2/graph/component-const.h>
#include <babeltrace2/graph/component-source-const.h>
#include <babeltrace2/graph/component-filter-const.h>
#include <babeltrace2/graph/component-sink-const.h>
+#include <babeltrace2/graph/graph-const.h>
#include "common/macros.h"
#include "compat/compiler.h"
#include <babeltrace2/types.h>
#include "graph.h"
#include "message/iterator.h"
#include "port.h"
+#include "lib/func-status.h"
static
struct bt_component * (* const component_create_funcs[])(
}
static
-enum bt_self_component_status add_port(
+enum bt_self_component_add_port_status add_port(
struct bt_component *component, GPtrArray *ports,
enum bt_port_type port_type, const char *name, void *user_data,
struct bt_port **port)
{
struct bt_port *new_port = NULL;
struct bt_graph *graph = NULL;
- enum bt_self_component_status status;
+ enum bt_self_component_add_port_status status;
BT_ASSERT_PRE_NON_NULL(component, "Component");
BT_ASSERT_PRE_NON_NULL(name, "Name");
new_port = bt_port_create(component, port_type, name, user_data);
if (!new_port) {
- BT_LOGE_STR("Cannot create port object.");
- status = BT_SELF_COMPONENT_STATUS_NOMEM;
+ BT_LIB_LOGE_APPEND_CAUSE("Cannot create port object.");
+ status = BT_FUNC_STATUS_MEMORY_ERROR;
goto error;
}
*/
graph = bt_component_borrow_graph(component);
if (graph) {
- enum bt_graph_listener_status listener_status;
+ enum bt_graph_listener_func_status listener_status;
listener_status = bt_graph_notify_port_added(graph, new_port);
- if (listener_status != BT_GRAPH_LISTENER_STATUS_OK) {
+ if (listener_status != BT_FUNC_STATUS_OK) {
bt_graph_make_faulty(graph);
- status = listener_status;
+ status = (int) listener_status;
goto error;
}
}
"%![comp-]+c, %![port-]+p", component, new_port);
*port = new_port;
- status = BT_SELF_COMPONENT_STATUS_OK;
+ status = BT_FUNC_STATUS_OK;
goto end;
error:
bt_common_logging_level_string(log_level));
component = component_create_funcs[type](component_class);
if (!component) {
- BT_LOGE_STR("Cannot create specific component object.");
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Cannot create specific component object.");
ret = -1;
goto end;
}
component->destroy = component_destroy_funcs[type];
component->name = g_string_new(name);
if (!component->name) {
- BT_LOGE_STR("Failed to allocate one GString.");
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one GString.");
ret = -1;
goto end;
}
component->input_ports = g_ptr_array_new_with_free_func(
(GDestroyNotify) bt_object_try_spec_release);
if (!component->input_ports) {
- BT_LOGE_STR("Failed to allocate one GPtrArray.");
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one GPtrArray.");
ret = -1;
goto end;
}
component->output_ports = g_ptr_array_new_with_free_func(
(GDestroyNotify) bt_object_try_spec_release);
if (!component->output_ports) {
- BT_LOGE_STR("Failed to allocate one GPtrArray.");
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one GPtrArray.");
ret = -1;
goto end;
}
component->destroy_listeners = g_array_new(FALSE, TRUE,
sizeof(struct bt_component_destroy_listener));
if (!component->destroy_listeners) {
- BT_LOGE_STR("Failed to allocate one GArray.");
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one GArray.");
ret = -1;
goto end;
}
}
BT_HIDDEN
-enum bt_self_component_status bt_component_add_input_port(
+enum bt_self_component_add_port_status bt_component_add_input_port(
struct bt_component *component, const char *name,
void *user_data, struct bt_port **port)
{
}
BT_HIDDEN
-enum bt_self_component_status bt_component_add_output_port(
+enum bt_self_component_add_port_status bt_component_add_output_port(
struct bt_component *component, const char *name,
void *user_data, struct bt_port **port)
{
}
BT_HIDDEN
-enum bt_self_component_status bt_component_accept_port_connection(
+enum bt_component_class_port_connected_method_status
+bt_component_port_connected(
struct bt_component *comp, struct bt_port *self_port,
struct bt_port *other_port)
{
- typedef enum bt_self_component_status (*method_t)(
+ typedef enum bt_component_class_port_connected_method_status (*method_t)(
void *, void *, const void *);
- enum bt_self_component_status status = BT_SELF_COMPONENT_STATUS_OK;
- method_t method = NULL;
-
- BT_ASSERT(comp);
- BT_ASSERT(self_port);
- BT_ASSERT(other_port);
-
- switch (comp->class->type) {
- case BT_COMPONENT_CLASS_TYPE_SOURCE:
- {
- struct bt_component_class_source *src_cc = (void *) comp->class;
-
- switch (self_port->type) {
- case BT_PORT_TYPE_OUTPUT:
- method = (method_t) src_cc->methods.accept_output_port_connection;
- break;
- default:
- abort();
- }
-
- break;
- }
- case BT_COMPONENT_CLASS_TYPE_FILTER:
- {
- struct bt_component_class_filter *flt_cc = (void *) comp->class;
-
- switch (self_port->type) {
- case BT_PORT_TYPE_INPUT:
- method = (method_t) flt_cc->methods.accept_input_port_connection;
- break;
- case BT_PORT_TYPE_OUTPUT:
- method = (method_t) flt_cc->methods.accept_output_port_connection;
- break;
- default:
- abort();
- }
-
- break;
- }
- case BT_COMPONENT_CLASS_TYPE_SINK:
- {
- struct bt_component_class_sink *sink_cc = (void *) comp->class;
-
- switch (self_port->type) {
- case BT_PORT_TYPE_INPUT:
- method = (method_t) sink_cc->methods.accept_input_port_connection;
- break;
- default:
- abort();
- }
-
- break;
- }
- default:
- abort();
- }
-
- if (method) {
- BT_LIB_LOGD("Calling user's \"accept port connection\" method: "
- "%![comp-]+c, %![self-port-]+p, %![other-port-]+p",
- comp, self_port, other_port);
- status = method(comp, self_port, (void *) other_port);
- BT_LOGD("User method returned: status=%s",
- bt_self_component_status_string(status));
- }
-
- return status;
-}
-
-BT_HIDDEN
-enum bt_self_component_status bt_component_port_connected(
- struct bt_component *comp, struct bt_port *self_port,
- struct bt_port *other_port)
-{
- typedef enum bt_self_component_status (*method_t)(
- void *, void *, const void *);
-
- enum bt_self_component_status status = BT_SELF_COMPONENT_STATUS_OK;
+ enum bt_component_class_port_connected_method_status status =
+ BT_FUNC_STATUS_OK;
method_t method = NULL;
BT_ASSERT(comp);
BT_LIB_LOGD("Calling user's \"port connected\" method: "
"%![comp-]+c, %![self-port-]+p, %![other-port-]+p",
comp, self_port, other_port);
- status = method(comp, self_port, (void *) other_port);
+ status = (int) method(comp, self_port, (void *) other_port);
BT_LOGD("User method returned: status=%s",
- bt_self_component_status_string(status));
- BT_ASSERT_PRE(status == BT_SELF_COMPONENT_STATUS_OK ||
- status == BT_SELF_COMPONENT_STATUS_ERROR ||
- status == BT_SELF_COMPONENT_STATUS_NOMEM,
+ bt_common_func_status_string(status));
+ BT_ASSERT_POST(status == BT_FUNC_STATUS_OK ||
+ status == BT_FUNC_STATUS_ERROR ||
+ status == BT_FUNC_STATUS_MEMORY_ERROR,
"Unexpected returned component status: status=%s",
- bt_self_component_status_string(status));
+ bt_common_func_status_string(status));
}
return status;