*/
#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>
BT_PORT_TYPE_OUTPUT, name, user_data, port);
}
-BT_HIDDEN
-enum bt_self_component_status bt_component_accept_port_connection(
- 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;
- 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,
status = 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 ||
+ BT_ASSERT_POST(status == BT_SELF_COMPONENT_STATUS_OK ||
status == BT_SELF_COMPONENT_STATUS_ERROR ||
status == BT_SELF_COMPONENT_STATUS_NOMEM,
"Unexpected returned component status: status=%s",