lib: graph: add "self" and some "private" APIs
[babeltrace.git] / tests / lib / test-plugin-plugins / sfs.c
CommitLineData
cbb9e0b1
PP
1/*
2 * Copyright (c) 2017 Philippe Proulx <pproulx@efficios.com>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; under version 2 of the License.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16 */
17
18#include <babeltrace/plugin/plugin-dev.h>
b2e0c907 19#include <babeltrace/graph/component-class.h>
5933c0f2 20#include <babeltrace/values.h>
17582c6d 21#include <babeltrace/private-values.h>
8138bfe1 22#include <babeltrace/object.h>
b8f13b8b
PP
23#include <babeltrace/assert-internal.h>
24#include <babeltrace/assert-internal.h>
cbb9e0b1 25
834e9996
PP
26static enum bt_self_component_status sink_consume(
27 struct bt_self_component_sink *self_comp)
cbb9e0b1 28{
834e9996 29 return BT_SELF_COMPONENT_STATUS_OK;
cbb9e0b1
PP
30}
31
834e9996
PP
32static enum bt_self_notification_iterator_status src_dummy_iterator_init_method(
33 struct bt_self_notification_iterator *self_notif_iter,
34 struct bt_self_component_source *self_comp,
35 struct bt_self_component_port_output *self_port)
cbb9e0b1 36{
834e9996
PP
37 return BT_SELF_NOTIFICATION_ITERATOR_STATUS_OK;
38}
39
40static enum bt_self_notification_iterator_status flt_dummy_iterator_init_method(
41 struct bt_self_notification_iterator *self_notif_iter,
42 struct bt_self_component_filter *self_comp,
43 struct bt_self_component_port_output *self_port)
44{
45 return BT_SELF_NOTIFICATION_ITERATOR_STATUS_OK;
d3eb6e8f
PP
46}
47
64cadc66 48static void dummy_iterator_finalize_method(
834e9996 49 struct bt_self_notification_iterator *self_notif_iter)
d3eb6e8f
PP
50{
51}
52
834e9996
PP
53static enum bt_self_notification_iterator_status dummy_iterator_next_method(
54 struct bt_self_notification_iterator *self_notif_iter,
3fd7b79d
PP
55 bt_notification_array notifs, uint64_t capacity,
56 uint64_t *count)
d3eb6e8f 57{
834e9996 58 return BT_SELF_NOTIFICATION_ITERATOR_STATUS_ERROR;
d3eb6e8f
PP
59}
60
834e9996
PP
61static enum bt_query_status flt_query_method(
62 struct bt_self_component_class_filter *component_class,
1286dcbb 63 struct bt_query_executor *query_exec,
834e9996
PP
64 const char *object, struct bt_value *params,
65 struct bt_value **result)
5933c0f2 66{
834e9996
PP
67 struct bt_private_value *res = bt_private_value_array_create();
68 *result = bt_private_value_borrow_value(res);
1286dcbb 69 int iret;
5933c0f2 70
834e9996
PP
71 BT_ASSERT(*result);
72 iret = bt_private_value_array_append_string_element(res, object);
b8f13b8b 73 BT_ASSERT(iret == 0);
834e9996 74 iret = bt_private_value_array_append_element(res, params);
b8f13b8b 75 BT_ASSERT(iret == 0);
834e9996 76 return BT_QUERY_STATUS_OK;
5933c0f2
PP
77}
78
edb2ec3c 79BT_PLUGIN_MODULE();
6ba0b073 80BT_PLUGIN(test_sfs);
cbb9e0b1
PP
81BT_PLUGIN_DESCRIPTION("Babeltrace plugin with source, sink, and filter component classes");
82BT_PLUGIN_AUTHOR("Janine Sutto");
83BT_PLUGIN_LICENSE("Beerware");
458e8e1d 84BT_PLUGIN_VERSION(1, 2, 3, "yes");
cbb9e0b1 85
41a2b7ae 86BT_PLUGIN_SOURCE_COMPONENT_CLASS(source, dummy_iterator_next_method);
d3e4dcd8 87BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION(source, "A source.");
d3eb6e8f 88BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD(source,
834e9996 89 src_dummy_iterator_init_method);
64cadc66
PP
90BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD(source,
91 dummy_iterator_finalize_method);
6ba0b073 92
d3e4dcd8
PP
93BT_PLUGIN_SINK_COMPONENT_CLASS(sink, sink_consume);
94BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(sink, "A sink.");
a889b89f
PP
95BT_PLUGIN_SINK_COMPONENT_CLASS_HELP(sink,
96 "Bacon ipsum dolor amet strip steak cupim pastrami venison shoulder.\n"
97 "Prosciutto beef ribs flank meatloaf pancetta brisket kielbasa drumstick\n"
98 "venison tenderloin cow tail. Beef short loin shoulder meatball, sirloin\n"
99 "ground round brisket salami cupim pork bresaola turkey bacon boudin.\n"
100);
6ba0b073 101
41a2b7ae 102BT_PLUGIN_FILTER_COMPONENT_CLASS(filter, dummy_iterator_next_method);
d3e4dcd8 103BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION(filter, "A filter.");
d3eb6e8f 104BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD(filter,
834e9996 105 flt_dummy_iterator_init_method);
64cadc66
PP
106BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD(filter,
107 dummy_iterator_finalize_method);
834e9996 108BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(filter, flt_query_method);
This page took 0.039963 seconds and 4 git commands to generate.