struct bt_component *sink)
{
int ret = 0;
+
+#if 0
struct bt_connection *connection = NULL;
struct bt_component *trimmer = NULL;
struct bt_port *source_port =
bt_put(sink_port);
bt_put(to_sink_port);
bt_put(connection);
+
+#endif
return ret;
}
struct bt_component *component, const char *name);
extern struct bt_port *bt_component_filter_get_input_port_by_index(
struct bt_component *component, uint64_t index);
-extern struct bt_port *bt_component_filter_get_default_input_port(
- struct bt_component *component);
extern int64_t bt_component_filter_get_output_port_count(
struct bt_component *component);
struct bt_component *component, const char *name);
extern struct bt_port *bt_component_filter_get_output_port_by_index(
struct bt_component *component, uint64_t index);
-extern struct bt_port *bt_component_filter_get_default_output_port(
- struct bt_component *component);
#ifdef __cplusplus
}
#include <glib.h>
#include <stdio.h>
-#define DEFAULT_INPUT_PORT_NAME "default"
-#define DEFAULT_OUTPUT_PORT_NAME "default"
-
typedef void (*bt_component_destroy_listener_func)(
struct bt_component *class, void *data);
struct bt_component *component, const char *name);
extern struct bt_port *bt_component_sink_get_input_port_by_index(
struct bt_component *component, uint64_t index);
-extern struct bt_port *bt_component_sink_get_default_input_port(
- struct bt_component *component);
#ifdef __cplusplus
}
struct bt_component *component, const char *name);
extern struct bt_port *bt_component_source_get_output_port_by_index(
struct bt_component *component, uint64_t index);
-extern struct bt_port *bt_component_source_get_default_output_port(
- struct bt_component *component);
#ifdef __cplusplus
}
BT_PORT_TYPE_UNKOWN = -1,
};
-extern const char *BT_DEFAULT_PORT_NAME;
-
extern const char *bt_port_get_name(struct bt_port *port);
extern enum bt_port_type bt_port_get_type(struct bt_port *port);
extern struct bt_connection *bt_port_get_connection(struct bt_port *port);
bt_private_component_filter_get_output_private_port_by_index(
struct bt_private_component *private_component, uint64_t index);
-extern struct bt_private_port *
-bt_private_component_filter_get_default_output_private_port(
- struct bt_private_component *private_component);
-
extern struct bt_private_port *
bt_private_component_filter_add_output_private_port(
struct bt_private_component *private_component,
bt_private_component_filter_get_input_private_port_by_index(
struct bt_private_component *private_component, uint64_t index);
-extern struct bt_private_port *
-bt_private_component_filter_get_default_input_private_port(
- struct bt_private_component *private_component);
-
extern struct bt_private_port *
bt_private_component_filter_add_input_private_port(
struct bt_private_component *private_component,
bt_private_component_sink_get_input_private_port_by_index(
struct bt_private_component *private_component, uint64_t index);
-extern struct bt_private_port *
-bt_private_component_sink_get_default_input_private_port(
- struct bt_private_component *private_component);
-
extern struct bt_private_port *
bt_private_component_sink_add_input_private_port(
struct bt_private_component *private_component,
struct bt_private_component *private_component,
uint64_t index);
-extern struct bt_private_port *
-bt_private_component_source_get_default_output_private_port(
- struct bt_private_component *private_component);
-
extern struct bt_private_port *
bt_private_component_source_add_output_private_port(
struct bt_private_component *private_component,
int ret;
struct bt_component *component = NULL;
enum bt_component_class_type type;
- struct bt_port *default_port = NULL;
bt_get(params);
goto end;
}
- if (type == BT_COMPONENT_CLASS_TYPE_SOURCE ||
- type == BT_COMPONENT_CLASS_TYPE_FILTER) {
- default_port = bt_component_add_port(component,
- component->output_ports, BT_PORT_TYPE_OUTPUT,
- DEFAULT_OUTPUT_PORT_NAME, NULL);
- if (!default_port) {
- BT_PUT(component);
- goto end;
- }
-
- BT_PUT(default_port);
- }
-
- if (type == BT_COMPONENT_CLASS_TYPE_FILTER ||
- type == BT_COMPONENT_CLASS_TYPE_SINK) {
- default_port = bt_component_add_port(component,
- component->input_ports, BT_PORT_TYPE_INPUT,
- DEFAULT_INPUT_PORT_NAME, NULL);
- if (!default_port) {
- BT_PUT(component);
- goto end;
- }
-
- BT_PUT(default_port);
- }
-
component->initializing = true;
if (component_class->methods.init) {
bt_component_class_freeze(component->class);
end:
bt_put(params);
- bt_put(default_port);
return component;
}
return port;
}
-struct bt_port *bt_component_filter_get_default_input_port(
- struct bt_component *component)
-{
- return bt_component_filter_get_input_port_by_name(component,
- DEFAULT_INPUT_PORT_NAME);
-}
-
int64_t bt_component_filter_get_output_port_count(
struct bt_component *component)
{
return port;
}
-struct bt_port *bt_component_filter_get_default_output_port(
- struct bt_component *component)
-{
- return bt_component_filter_get_output_port_by_name(component,
- DEFAULT_OUTPUT_PORT_NAME);
-}
-
struct bt_private_port *
bt_private_component_filter_get_input_private_port_by_index(
struct bt_private_component *private_component, uint64_t index)
}
struct bt_private_port *
-bt_private_component_filter_get_default_input_private_port(
- struct bt_private_component *private_component)
+bt_private_component_filter_get_input_private_port_by_name(
+ struct bt_private_component *private_component,
+ const char *name)
{
return bt_private_port_from_port(
- bt_component_filter_get_default_input_port(
- bt_component_from_private(private_component)));
+ bt_component_filter_get_input_port_by_name(
+ bt_component_from_private(private_component), name));
}
struct bt_private_port *bt_private_component_filter_add_input_private_port(
}
struct bt_private_port *
-bt_private_component_filter_get_default_output_private_port(
- struct bt_private_component *private_component)
+bt_private_component_filter_get_output_private_port_by_name(
+ struct bt_private_component *private_component,
+ const char *name)
{
return bt_private_port_from_port(
- bt_component_filter_get_default_output_port(
- bt_component_from_private(private_component)));
+ bt_component_filter_get_output_port_by_name(
+ bt_component_from_private(private_component), name));
}
struct bt_private_port *bt_private_component_filter_add_output_private_port(
return port;
}
-struct bt_port *bt_component_sink_get_default_input_port(
- struct bt_component *component)
-{
- return bt_component_sink_get_input_port_by_name(component,
- DEFAULT_INPUT_PORT_NAME);
-}
-
struct bt_private_port *
bt_private_component_sink_get_input_private_port_by_index(
struct bt_private_component *private_component, uint64_t index)
bt_component_from_private(private_component), index));
}
-struct bt_private_port *bt_private_component_sink_get_default_input_private_port(
- struct bt_private_component *private_component)
+struct bt_private_port *
+bt_private_component_sink_get_input_private_port_by_name(
+ struct bt_private_component *private_component,
+ const char *name)
{
return bt_private_port_from_port(
- bt_component_sink_get_default_input_port(
- bt_component_from_private(private_component)));
+ bt_component_sink_get_input_port_by_name(
+ bt_component_from_private(private_component), name));
}
struct bt_private_port *bt_private_component_sink_add_input_private_port(
return port;
}
-struct bt_port *bt_component_source_get_default_output_port(
- struct bt_component *component)
-{
- return bt_component_source_get_output_port_by_name(component,
- DEFAULT_OUTPUT_PORT_NAME);
-}
-
struct bt_private_port *
bt_private_component_source_get_output_private_port_by_name(
struct bt_private_component *private_component,
bt_component_from_private(private_component), index));
}
-struct bt_private_port *bt_private_component_source_get_default_output_private_port(
- struct bt_private_component *private_component)
-{
- return bt_private_port_from_port(
- bt_component_source_get_default_output_port(
- bt_component_from_private(private_component)));
-}
-
struct bt_private_port *bt_private_component_source_add_output_private_port(
struct bt_private_component *private_component,
const char *name, void *user_data)
const char *basename;
GError *error = NULL;
GDir *dir = NULL;
- struct bt_private_port *def_port;
struct ctf_fs_file *file = NULL;
- /* Remove default port if needed */
- def_port = bt_private_component_source_get_default_output_private_port(
- ctf_fs->priv_comp);
- if (def_port) {
- bt_private_port_remove_from_component(def_port);
- bt_put(def_port);
- }
-
/* Create one output port for each stream file */
dir = g_dir_open(ctf_fs->trace_path->str, 0, &error);
if (!dir) {
}
/* Create a new iterator on the upstream component. */
- input_port = bt_private_component_filter_get_default_input_private_port(component);
+ input_port = bt_private_component_filter_get_input_private_port_by_name(
+ component, "in");
assert(input_port);
connection = bt_private_port_get_private_connection(input_port);
assert(connection);
#include <babeltrace/plugin/plugin-dev.h>
#include <babeltrace/graph/component.h>
#include <babeltrace/graph/private-component.h>
+#include <babeltrace/graph/private-component-sink.h>
#include <babeltrace/graph/component-sink.h>
#include <babeltrace/graph/port.h>
#include <babeltrace/graph/private-port.h>
{
enum bt_component_status ret;
struct pretty_component *pretty = create_pretty();
+ void *priv_port;
if (!pretty) {
ret = BT_COMPONENT_STATUS_NOMEM;
goto end;
}
+ priv_port = bt_private_component_sink_add_input_private_port(component,
+ "in", NULL);
+ if (!priv_port) {
+ ret = BT_COMPONENT_STATUS_NOMEM;
+ goto end;
+ }
+
+ bt_put(priv_port);
+
pretty->out = stdout;
pretty->err = stderr;
#include <babeltrace/plugin/plugin-dev.h>
#include <babeltrace/graph/component.h>
#include <babeltrace/graph/private-component.h>
+#include <babeltrace/graph/private-component-sink.h>
#include <babeltrace/graph/private-port.h>
#include <babeltrace/graph/port.h>
#include <babeltrace/graph/private-connection.h>
{
enum bt_component_status ret;
struct dummy *dummy = g_new0(struct dummy, 1);
+ void *priv_port;
if (!dummy) {
ret = BT_COMPONENT_STATUS_NOMEM;
goto end;
}
+ priv_port = bt_private_component_sink_add_input_private_port(component,
+ "in", NULL);
+ if (!priv_port) {
+ ret = BT_COMPONENT_STATUS_NOMEM;
+ goto end;
+ }
+
+ bt_put(priv_port);
dummy->iterators = g_ptr_array_new_with_free_func(
(GDestroyNotify) bt_put);
if (!dummy->iterators) {
return ret;
}
-static
-int remove_default_ports(struct bt_private_component *priv_comp)
-{
- struct bt_private_port *priv_port;
- int ret = 0;
-
- priv_port = bt_private_component_filter_get_default_input_private_port(
- priv_comp);
- if (priv_port) {
- ret = bt_private_port_remove_from_component(priv_port);
- if (ret) {
- goto end;
- }
- }
-
- bt_put(priv_port);
- priv_port = bt_private_component_filter_get_default_output_private_port(
- priv_comp);
- if (priv_port) {
- ret = bt_private_port_remove_from_component(priv_port);
- if (ret) {
- goto end;
- }
- }
-
-end:
- bt_put(priv_port);
- return ret;
-}
-
static
int create_output_port(struct bt_private_component *priv_comp)
{
muxer_comp->priv_comp = priv_comp;
ret = bt_private_component_set_user_data(priv_comp, muxer_comp);
assert(ret == 0);
- ret = remove_default_ports(priv_comp);
- if (ret) {
- goto error;
- }
-
ret = ensure_available_input_port(priv_comp);
if (ret) {
goto error;
}
/* Create a new iterator on the upstream component. */
- input_port = bt_private_component_filter_get_default_input_private_port(
- component);
+ input_port = bt_private_component_filter_get_input_private_port_by_name(
+ component, "in");
assert(input_port);
connection = bt_private_port_get_private_connection(input_port);
assert(connection);
#include <babeltrace/graph/notification.h>
#include <babeltrace/graph/notification-iterator.h>
#include <babeltrace/graph/private-notification-iterator.h>
+#include <babeltrace/graph/private-component-filter.h>
#include <babeltrace/graph/notification-event.h>
#include <plugins-common.h>
#include "trimmer.h"
{
enum bt_component_status ret;
struct trimmer *trimmer = create_trimmer_data();
+ struct bt_private_port *priv_port = NULL;
if (!trimmer) {
ret = BT_COMPONENT_STATUS_NOMEM;
goto end;
}
+ /* Create input and output ports */
+ priv_port = bt_private_component_filter_add_input_private_port(
+ component, "in", NULL);
+ if (!priv_port) {
+ goto error;
+ }
+
+ bt_put(priv_port);
+ priv_port = bt_private_component_filter_add_output_private_port(
+ component, "out", NULL);
+ if (!priv_port) {
+ goto error;
+ }
+
ret = bt_private_component_set_user_data(component, trimmer);
if (ret != BT_COMPONENT_STATUS_OK) {
goto error;
ret = init_from_params(trimmer, params);
end:
+ bt_put(priv_port);
return ret;
error:
destroy_trimmer_data(trimmer);
+ ret = BT_COMPONENT_STATUS_ERROR;
return ret;
}
struct writer_component *writer_component = create_writer_component();
struct bt_value *value = NULL;
const char *path;
+ void *priv_port;
if (!writer_component) {
ret = BT_COMPONENT_STATUS_NOMEM;
goto end;
}
+ priv_port = bt_private_component_sink_add_input_private_port(component,
+ "in", NULL);
+ if (!priv_port) {
+ ret = BT_COMPONENT_STATUS_NOMEM;
+ goto end;
+ }
+
+ bt_put(priv_port);
+
value = bt_value_map_get(params, "path");
if (!value || bt_value_is_null(value) || !bt_value_is_string(value)) {
fprintf(writer_component->err,
#include <babeltrace/graph/notification-stream.h>
#include <babeltrace/graph/port.h>
#include <babeltrace/graph/private-component-source.h>
+#include <babeltrace/graph/private-component-sink.h>
#include <babeltrace/graph/private-component.h>
#include <babeltrace/graph/private-connection.h>
#include <babeltrace/graph/private-notification-iterator.h>
struct bt_private_component *private_component,
struct bt_value *params, void *init_method_data)
{
+ void *priv_port;
+
+ priv_port = bt_private_component_source_add_output_private_port(
+ private_component, "out", NULL);
+ assert(priv_port);
+ bt_put(priv_port);
return BT_COMPONENT_STATUS_OK;
}
{
struct sink_user_data *user_data = g_new0(struct sink_user_data, 1);
int ret;
+ void *priv_port;
assert(user_data);
ret = bt_private_component_set_user_data(private_component,
user_data);
assert(ret == 0);
+ priv_port = bt_private_component_sink_add_input_private_port(
+ private_component, "in", NULL);
+ assert(priv_port);
+ bt_put(priv_port);
return BT_COMPONENT_STATUS_OK;
}
assert(graph);
/* Connect source to sink */
- upstream_port = bt_component_source_get_default_output_port(src_comp);
+ upstream_port = bt_component_source_get_output_port_by_name(src_comp, "out");
assert(upstream_port);
- downstream_port = bt_component_sink_get_default_input_port(sink_comp);
+ downstream_port = bt_component_sink_get_input_port_by_name(sink_comp, "in");
assert(downstream_port);
conn = bt_graph_connect_ports(graph, upstream_port, downstream_port);
assert(conn);
}
}
+static
+enum bt_component_status src_init(struct bt_private_component *priv_comp,
+ struct bt_value *params, void *init_method_data)
+{
+ void *priv_port;
+
+ priv_port = bt_private_component_source_add_output_private_port(
+ priv_comp, "out", NULL);
+ assert(priv_port);
+ bt_put(priv_port);
+ return BT_COMPONENT_STATUS_OK;
+}
+
static
enum bt_component_status sink_consume(
struct bt_private_component *priv_component)
switch (current_test) {
case TEST_SINK_REMOVES_PORT_IN_CONSUME:
case TEST_SINK_REMOVES_PORT_IN_CONSUME_THEN_SRC_REMOVES_DISCONNECTED_PORT:
- def_port = bt_private_component_sink_get_default_input_private_port(
- priv_component);
+ def_port = bt_private_component_sink_get_input_private_port_by_name(
+ priv_component, "in");
assert(def_port);
ret = bt_private_port_remove_from_component(def_port);
assert(ret == 0);
append_event(&event);
}
+static
+enum bt_component_status sink_init(struct bt_private_component *priv_comp,
+ struct bt_value *params, void *init_method_data)
+{
+ void *priv_port;
+
+ priv_port = bt_private_component_sink_add_input_private_port(priv_comp,
+ "in", NULL);
+ assert(priv_port);
+ bt_put(priv_port);
+ return BT_COMPONENT_STATUS_OK;
+}
+
static
void graph_port_added(struct bt_port *port,
void *data)
src_comp_class = bt_component_class_source_create("src", src_iter_next);
assert(src_comp_class);
+ ret = bt_component_class_set_init_method(src_comp_class, src_init);
+ assert(ret == 0);
ret = bt_component_class_set_accept_port_connection_method(
src_comp_class, accept_port_connection);
assert(ret == 0);
assert(ret == 0);
sink_comp_class = bt_component_class_sink_create("sink", sink_consume);
assert(sink_comp_class);
+ ret = bt_component_class_set_init_method(sink_comp_class, sink_init);
+ assert(ret == 0);
ret = bt_component_class_set_accept_port_connection_method(
sink_comp_class, accept_port_connection);
assert(ret == 0);
src = create_src();
sink = create_sink();
graph = create_graph();
- src_def_port = bt_component_source_get_default_output_port(src);
+ src_def_port = bt_component_source_get_output_port_by_name(src, "out");
assert(src_def_port);
- sink_def_port = bt_component_sink_get_default_input_port(sink);
+ sink_def_port = bt_component_sink_get_input_port_by_name(sink, "in");
assert(sink_def_port);
conn = bt_graph_connect_ports(graph, src_def_port, sink_def_port);
assert(conn);
src = create_src();
sink = create_sink();
graph = create_graph();
- src_def_port = bt_component_source_get_default_output_port(src);
+ src_def_port = bt_component_source_get_output_port_by_name(src, "out");
assert(src_def_port);
- sink_def_port = bt_component_sink_get_default_input_port(sink);
+ sink_def_port = bt_component_sink_get_input_port_by_name(sink, "in");
assert(sink_def_port);
conn = bt_graph_connect_ports(graph, src_def_port, sink_def_port);
assert(conn);
src = create_src();
sink = create_sink();
graph = create_graph();
- src_def_port = bt_component_source_get_default_output_port(src);
+ src_def_port = bt_component_source_get_output_port_by_name(src, "out");
assert(src_def_port);
- sink_def_port = bt_component_sink_get_default_input_port(sink);
+ sink_def_port = bt_component_sink_get_input_port_by_name(sink, "in");
assert(sink_def_port);
conn = bt_graph_connect_ports(graph, src_def_port, sink_def_port);
assert(conn);
src = create_src();
sink = create_sink();
graph = create_graph();
- src_def_port = bt_component_source_get_default_output_port(src);
+ src_def_port = bt_component_source_get_output_port_by_name(src, "out");
assert(src_def_port);
- sink_def_port = bt_component_sink_get_default_input_port(sink);
+ sink_def_port = bt_component_sink_get_input_port_by_name(sink, "in");
assert(sink_def_port);
conn = bt_graph_connect_ports(graph, src_def_port, sink_def_port);
assert(conn);
#include <babeltrace/graph/notification-packet.h>
#include <babeltrace/graph/port.h>
#include <babeltrace/graph/private-component-source.h>
+#include <babeltrace/graph/private-component-sink.h>
#include <babeltrace/graph/private-component.h>
#include <babeltrace/graph/private-connection.h>
#include <babeltrace/graph/private-notification-iterator.h>
struct bt_value *params, void *init_method_data)
{
struct bt_private_port *priv_port;
- int ret;
size_t nb_ports;
- priv_port = bt_private_component_source_get_default_output_private_port(
- private_component);
- if (priv_port) {
- ret = bt_private_port_remove_from_component(priv_port);
- assert(ret == 0);
- bt_put(priv_port);
- }
-
switch (current_test) {
case TEST_NO_TS:
nb_ports = 2;
{
struct sink_user_data *user_data = g_new0(struct sink_user_data, 1);
int ret;
+ void *priv_port;
assert(user_data);
ret = bt_private_component_set_user_data(private_component,
user_data);
assert(ret == 0);
+ priv_port = bt_private_component_sink_add_input_private_port(
+ private_component, "in", NULL);
+ assert(priv_port);
+ bt_put(priv_port);
return BT_COMPONENT_STATUS_OK;
}
upstream_port = bt_component_filter_get_output_port_by_name(muxer_comp,
"out");
assert(upstream_port);
- downstream_port = bt_component_sink_get_default_input_port(sink_comp);
+ downstream_port = bt_component_sink_get_input_port_by_name(sink_comp, "in");
assert(downstream_port);
conn = bt_graph_connect_ports(graph, upstream_port, downstream_port);
assert(conn);
upstream_port = bt_component_filter_get_output_port_by_name(muxer_comp,
"out");
assert(upstream_port);
- downstream_port = bt_component_sink_get_default_input_port(sink_comp);
+ downstream_port = bt_component_sink_get_input_port_by_name(sink_comp, "in");
assert(downstream_port);
conn = bt_graph_connect_ports(graph, upstream_port, downstream_port);
assert(conn);
upstream_port = bt_component_filter_get_output_port_by_name(muxer_comp,
"out");
assert(upstream_port);
- downstream_port = bt_component_sink_get_default_input_port(sink_comp);
+ downstream_port = bt_component_sink_get_input_port_by_name(sink_comp, "in");
assert(downstream_port);
conn = bt_graph_connect_ports(graph, upstream_port, downstream_port);
assert(conn);