summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
9987e1a)
When you create a component class, you can set an optional "query info"
class method with bt_component_class_sink_set_query_info_method().
A "query info" class method is a method which accepts an action name
and custom parameters and returns custom results. It can be used for
component class-specific requests such as getting the beginning and end
timestamps of a trace, its total size, and other statistics. On some
real-time source component class, it can be used to get a list of
endpoints to which to connect.
You can use bt_component_class_query_info() to query a component class.
The action name and parameters are mandatory, although you can use
bt_value_null for the parameters.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
struct {
bt_component_class_init_method init;
bt_component_class_destroy_method destroy;
struct {
bt_component_class_init_method init;
bt_component_class_destroy_method destroy;
+ bt_component_class_query_info_method query_info;
} methods;
/* Array of struct bt_component_class_destroy_listener */
GArray *destroy_listeners;
} methods;
/* Array of struct bt_component_class_destroy_listener */
GArray *destroy_listeners;
(*bt_component_class_notification_iterator_seek_time_method)(
struct bt_notification_iterator *iterator, int64_t time);
(*bt_component_class_notification_iterator_seek_time_method)(
struct bt_notification_iterator *iterator, int64_t time);
+typedef struct bt_value *(*bt_component_class_query_info_method)(
+ struct bt_component_class *component_class,
+ const char *action, struct bt_value *params);
+
extern int bt_component_class_set_init_method(
struct bt_component_class *component_class,
bt_component_class_init_method init_method);
extern int bt_component_class_set_init_method(
struct bt_component_class *component_class,
bt_component_class_init_method init_method);
extern const char *bt_component_class_get_help(
struct bt_component_class *component_class);
extern const char *bt_component_class_get_help(
struct bt_component_class *component_class);
+extern int bt_component_class_set_query_info_method(
+ struct bt_component_class *component_class,
+ bt_component_class_query_info_method query_info_method);
+
+extern struct bt_value *bt_component_class_query_info(
+ struct bt_component_class *component_class,
+ const char *action, struct bt_value *params);
+
/**
* Get a component class' type.
*
/**
* Get a component class' type.
*
+int bt_component_class_set_query_info_method(
+ struct bt_component_class *component_class,
+ bt_component_class_query_info_method query_info_method)
+{
+ int ret = 0;
+
+ if (!component_class || component_class->frozen || !query_info_method) {
+ ret = -1;
+ goto end;
+ }
+
+ component_class->methods.query_info = query_info_method;
+
+end:
+ return ret;
+}
+
int bt_component_class_set_destroy_method(
struct bt_component_class *component_class,
bt_component_class_destroy_method destroy_method)
int bt_component_class_set_destroy_method(
struct bt_component_class *component_class,
bt_component_class_destroy_method destroy_method)
+
+struct bt_value *bt_component_class_query_info(
+ struct bt_component_class *component_class,
+ const char *action, struct bt_value *params)
+{
+ struct bt_value *results = NULL;
+
+ if (!component_class || !action || !params ||
+ !component_class->methods.query_info) {
+ goto end;
+ }
+
+ results = component_class->methods.query_info(component_class,
+ action, params);
+
+end:
+ return results;
+}