Add query executor
[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
PP
20#include <babeltrace/values.h>
21#include <babeltrace/ref.h>
22#include <assert.h>
cbb9e0b1 23
890882ef
PP
24static enum bt_component_status sink_consume(
25 struct bt_private_component *private_component)
cbb9e0b1 26{
cbb9e0b1
PP
27 return BT_COMPONENT_STATUS_OK;
28}
29
d3eb6e8f 30static enum bt_notification_iterator_status dummy_iterator_init_method(
91457551
PP
31 struct bt_private_notification_iterator *private_iterator,
32 struct bt_private_port *private_port)
cbb9e0b1 33{
d3eb6e8f
PP
34 return BT_NOTIFICATION_ITERATOR_STATUS_OK;
35}
36
64cadc66 37static void dummy_iterator_finalize_method(
890882ef 38 struct bt_private_notification_iterator *private_iterator)
d3eb6e8f
PP
39{
40}
41
41a2b7ae 42static struct bt_notification_iterator_next_return dummy_iterator_next_method(
890882ef 43 struct bt_private_notification_iterator *private_iterator)
d3eb6e8f 44{
41a2b7ae
PP
45 struct bt_notification_iterator_next_return next_return = {
46 .notification = NULL,
47 .status = BT_NOTIFICATION_ITERATOR_STATUS_OK,
48 };
d3eb6e8f 49
41a2b7ae 50 return next_return;
d3eb6e8f
PP
51}
52
53static enum bt_notification_iterator_status dummy_iterator_seek_time_method(
890882ef
PP
54 struct bt_private_notification_iterator *private_iterator,
55 int64_t time)
d3eb6e8f
PP
56{
57 return BT_NOTIFICATION_ITERATOR_STATUS_OK;
cbb9e0b1
PP
58}
59
c7eee084 60static struct bt_component_class_query_return query_method(
5933c0f2 61 struct bt_component_class *component_class,
c7eee084 62 struct bt_query_executor *query_exec,
a67681c1 63 const char *object, struct bt_value *params)
5933c0f2 64{
c7eee084
PP
65 struct bt_component_class_query_return ret = {
66 .status = BT_QUERY_STATUS_OK,
67 .result = bt_value_array_create(),
68 };
69 int iret;
5933c0f2 70
c7eee084
PP
71 assert(ret.result);
72 iret = bt_value_array_append_string(ret.result, object);
73 assert(iret == 0);
74 iret = bt_value_array_append(ret.result, params);
75 assert(iret == 0);
76 return ret;
5933c0f2
PP
77}
78
df5b5d01 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
PP
88BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD(source,
89 dummy_iterator_init_method);
64cadc66
PP
90BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD(source,
91 dummy_iterator_finalize_method);
d3eb6e8f
PP
92BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD(source,
93 dummy_iterator_seek_time_method);
6ba0b073 94
d3e4dcd8
PP
95BT_PLUGIN_SINK_COMPONENT_CLASS(sink, sink_consume);
96BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(sink, "A sink.");
a889b89f
PP
97BT_PLUGIN_SINK_COMPONENT_CLASS_HELP(sink,
98 "Bacon ipsum dolor amet strip steak cupim pastrami venison shoulder.\n"
99 "Prosciutto beef ribs flank meatloaf pancetta brisket kielbasa drumstick\n"
100 "venison tenderloin cow tail. Beef short loin shoulder meatball, sirloin\n"
101 "ground round brisket salami cupim pork bresaola turkey bacon boudin.\n"
102);
6ba0b073 103
41a2b7ae 104BT_PLUGIN_FILTER_COMPONENT_CLASS(filter, dummy_iterator_next_method);
d3e4dcd8 105BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION(filter, "A filter.");
d3eb6e8f
PP
106BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD(filter,
107 dummy_iterator_init_method);
64cadc66
PP
108BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD(filter,
109 dummy_iterator_finalize_method);
d3eb6e8f
PP
110BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD(filter,
111 dummy_iterator_seek_time_method);
a67681c1 112BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(filter, query_method);
This page took 0.036538 seconds and 4 git commands to generate.