lib: prepare the ground for stateful query operations
[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
71c5da58 18#include <babeltrace2/babeltrace.h>
57952005 19#include "common/assert.h"
cbb9e0b1 20
fb25b9e3 21static bt_component_class_sink_consume_method_status sink_consume(
8eee8ea2 22 bt_self_component_sink *self_comp)
cbb9e0b1 23{
fb25b9e3 24 return BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_OK;
cbb9e0b1
PP
25}
26
fb25b9e3
PP
27static bt_component_class_message_iterator_init_method_status
28src_dummy_iterator_init_method(
b09a5592 29 bt_self_message_iterator *self_msg_iter,
8eee8ea2
PP
30 bt_self_component_source *self_comp,
31 bt_self_component_port_output *self_port)
cbb9e0b1 32{
fb25b9e3 33 return BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK;
834e9996
PP
34}
35
fb25b9e3
PP
36static bt_component_class_message_iterator_init_method_status
37flt_dummy_iterator_init_method(
b09a5592 38 bt_self_message_iterator *self_msg_iter,
8eee8ea2
PP
39 bt_self_component_filter *self_comp,
40 bt_self_component_port_output *self_port)
834e9996 41{
fb25b9e3 42 return BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK;
d3eb6e8f
PP
43}
44
64cadc66 45static void dummy_iterator_finalize_method(
b09a5592 46 bt_self_message_iterator *self_msg_iter)
d3eb6e8f
PP
47{
48}
49
fb25b9e3
PP
50static bt_component_class_message_iterator_next_method_status
51dummy_iterator_next_method(
b09a5592
PP
52 bt_self_message_iterator *self_msg_iter,
53 bt_message_array_const msgs, uint64_t capacity,
3fd7b79d 54 uint64_t *count)
d3eb6e8f 55{
fb25b9e3 56 return BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
d3eb6e8f
PP
57}
58
fb25b9e3 59static bt_component_class_query_method_status flt_query_method(
8eee8ea2 60 bt_self_component_class_filter *component_class,
bf403eb2 61 bt_private_query_executor *priv_query_exec,
8eee8ea2
PP
62 const char *object, const bt_value *params,
63 const bt_value **result)
5933c0f2 64{
8eee8ea2
PP
65 bt_value *res = bt_value_array_create();
66 bt_value *val;
ce141536 67 *result = res;
1286dcbb 68 int iret;
5933c0f2 69
834e9996 70 BT_ASSERT(*result);
ce141536
PP
71 iret = bt_value_array_append_string_element(res, object);
72 BT_ASSERT(iret == 0);
6284461f 73 iret = bt_value_copy(params, &val);
b8f13b8b 74 BT_ASSERT(iret == 0);
ce141536 75 iret = bt_value_array_append_element(res, val);
b8f13b8b 76 BT_ASSERT(iret == 0);
8c6884d9 77 bt_value_put_ref(val);
fb25b9e3 78 return BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_OK;
5933c0f2
PP
79}
80
edb2ec3c 81BT_PLUGIN_MODULE();
6ba0b073 82BT_PLUGIN(test_sfs);
cbb9e0b1
PP
83BT_PLUGIN_DESCRIPTION("Babeltrace plugin with source, sink, and filter component classes");
84BT_PLUGIN_AUTHOR("Janine Sutto");
85BT_PLUGIN_LICENSE("Beerware");
458e8e1d 86BT_PLUGIN_VERSION(1, 2, 3, "yes");
cbb9e0b1 87
41a2b7ae 88BT_PLUGIN_SOURCE_COMPONENT_CLASS(source, dummy_iterator_next_method);
d3e4dcd8 89BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION(source, "A source.");
b09a5592 90BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD(source,
834e9996 91 src_dummy_iterator_init_method);
b09a5592 92BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD(source,
64cadc66 93 dummy_iterator_finalize_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.");
b09a5592 106BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD(filter,
834e9996 107 flt_dummy_iterator_init_method);
b09a5592 108BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD(filter,
64cadc66 109 dummy_iterator_finalize_method);
834e9996 110BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(filter, flt_query_method);
This page took 0.046707 seconds and 4 git commands to generate.