lib: introduce bt_message_iterator_class
[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
3fadfbc0 18#include <babeltrace2/babeltrace.h>
578e048b 19#include "common/assert.h"
cbb9e0b1 20
d24d5663 21static bt_component_class_sink_consume_method_status sink_consume(
b19ff26f 22 bt_self_component_sink *self_comp)
cbb9e0b1 23{
d24d5663 24 return BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_OK;
cbb9e0b1
PP
25}
26
a3f0c7db 27static bt_message_iterator_class_initialize_method_status
d24d5663 28src_dummy_iterator_init_method(
d6e69534 29 bt_self_message_iterator *self_msg_iter,
8d8b141d 30 bt_self_message_iterator_configuration *config,
a3f0c7db 31 bt_self_component *self_comp,
b19ff26f 32 bt_self_component_port_output *self_port)
cbb9e0b1 33{
a3f0c7db 34 return BT_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_STATUS_OK;
d94d92ac
PP
35}
36
a3f0c7db 37static bt_message_iterator_class_initialize_method_status
d24d5663 38flt_dummy_iterator_init_method(
d6e69534 39 bt_self_message_iterator *self_msg_iter,
8d8b141d 40 bt_self_message_iterator_configuration *config,
a3f0c7db 41 bt_self_component *self_comp,
b19ff26f 42 bt_self_component_port_output *self_port)
d94d92ac 43{
a3f0c7db 44 return BT_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_STATUS_OK;
d3eb6e8f
PP
45}
46
64cadc66 47static void dummy_iterator_finalize_method(
d6e69534 48 bt_self_message_iterator *self_msg_iter)
d3eb6e8f
PP
49{
50}
51
a3f0c7db 52static bt_message_iterator_class_next_method_status
d24d5663 53dummy_iterator_next_method(
d6e69534
PP
54 bt_self_message_iterator *self_msg_iter,
55 bt_message_array_const msgs, uint64_t capacity,
d4393e08 56 uint64_t *count)
d3eb6e8f 57{
a3f0c7db 58 return BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
d3eb6e8f
PP
59}
60
d24d5663 61static bt_component_class_query_method_status flt_query_method(
b19ff26f 62 bt_self_component_class_filter *component_class,
3c729b9a 63 bt_private_query_executor *priv_query_exec,
b19ff26f 64 const char *object, const bt_value *params,
7c14d641 65 __attribute__((unused)) void *method_data,
b19ff26f 66 const bt_value **result)
5933c0f2 67{
b19ff26f
PP
68 bt_value *res = bt_value_array_create();
69 bt_value *val;
05e21286 70 *result = res;
c7eee084 71 int iret;
5933c0f2 72
d94d92ac 73 BT_ASSERT(*result);
05e21286
PP
74 iret = bt_value_array_append_string_element(res, object);
75 BT_ASSERT(iret == 0);
6be5a99e 76 iret = bt_value_copy(params, &val);
25583cd0 77 BT_ASSERT(iret == 0);
05e21286 78 iret = bt_value_array_append_element(res, val);
25583cd0 79 BT_ASSERT(iret == 0);
c5b9b441 80 bt_value_put_ref(val);
d24d5663 81 return BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_OK;
5933c0f2
PP
82}
83
df5b5d01 84BT_PLUGIN_MODULE();
6ba0b073 85BT_PLUGIN(test_sfs);
cbb9e0b1
PP
86BT_PLUGIN_DESCRIPTION("Babeltrace plugin with source, sink, and filter component classes");
87BT_PLUGIN_AUTHOR("Janine Sutto");
88BT_PLUGIN_LICENSE("Beerware");
458e8e1d 89BT_PLUGIN_VERSION(1, 2, 3, "yes");
cbb9e0b1 90
41a2b7ae 91BT_PLUGIN_SOURCE_COMPONENT_CLASS(source, dummy_iterator_next_method);
d3e4dcd8 92BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION(source, "A source.");
21a9f056 93BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD(source,
d94d92ac 94 src_dummy_iterator_init_method);
d6e69534 95BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD(source,
64cadc66 96 dummy_iterator_finalize_method);
6ba0b073 97
d3e4dcd8
PP
98BT_PLUGIN_SINK_COMPONENT_CLASS(sink, sink_consume);
99BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(sink, "A sink.");
a889b89f
PP
100BT_PLUGIN_SINK_COMPONENT_CLASS_HELP(sink,
101 "Bacon ipsum dolor amet strip steak cupim pastrami venison shoulder.\n"
102 "Prosciutto beef ribs flank meatloaf pancetta brisket kielbasa drumstick\n"
103 "venison tenderloin cow tail. Beef short loin shoulder meatball, sirloin\n"
104 "ground round brisket salami cupim pork bresaola turkey bacon boudin.\n"
105);
6ba0b073 106
41a2b7ae 107BT_PLUGIN_FILTER_COMPONENT_CLASS(filter, dummy_iterator_next_method);
d3e4dcd8 108BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION(filter, "A filter.");
21a9f056 109BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD(filter,
d94d92ac 110 flt_dummy_iterator_init_method);
d6e69534 111BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD(filter,
64cadc66 112 dummy_iterator_finalize_method);
d94d92ac 113BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(filter, flt_query_method);
This page took 0.061555 seconds and 4 git commands to generate.