X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fcomponent%2Fcomponent-class.h;h=6135343ec3505b54fff9ad9e15bc277c4f7bb5c5;hb=a67681c1f02f54bc1f708d449bceb35476024083;hp=d12a12022c0ee92ba41d41d0a6ffd5d721f7821c;hpb=33b34c437c354e1c065e33151135bc2e57e2e29c;p=babeltrace.git diff --git a/include/babeltrace/component/component-class.h b/include/babeltrace/component/component-class.h index d12a1202..6135343e 100644 --- a/include/babeltrace/component/component-class.h +++ b/include/babeltrace/component/component-class.h @@ -31,28 +31,70 @@ extern "C" { #endif +struct bt_component_class; + /** - * Component type. + * Component class type. */ -enum bt_component_type { - BT_COMPONENT_TYPE_UNKNOWN = -1, +enum bt_component_class_type { + BT_COMPONENT_CLASS_TYPE_UNKNOWN = -1, /** A source component is a notification generator. */ - BT_COMPONENT_TYPE_SOURCE = 0, + BT_COMPONENT_CLASS_TYPE_SOURCE = 0, /** A sink component handles incoming notifications. */ - BT_COMPONENT_TYPE_SINK = 1, + BT_COMPONENT_CLASS_TYPE_SINK = 1, /** A filter component implements both Source and Sink interfaces. */ - BT_COMPONENT_TYPE_FILTER = 2, + BT_COMPONENT_CLASS_TYPE_FILTER = 2, }; -struct bt_plugin; -struct bt_component_class; +typedef enum bt_component_status (*bt_component_class_init_method)( + struct bt_component *component, struct bt_value *params, + void *init_method_data); + +typedef void (*bt_component_class_destroy_method)(struct bt_component *component); + +typedef enum bt_notification_iterator_status + (*bt_component_class_notification_iterator_init_method)( + struct bt_component *component, + struct bt_notification_iterator *iterator, void *init_method_data); + +typedef void (*bt_component_class_notification_iterator_destroy_method)( + struct bt_notification_iterator *iterator); + +typedef struct bt_notification *(*bt_component_class_notification_iterator_get_method)( + struct bt_notification_iterator *iterator); + +typedef enum bt_notification_iterator_status (*bt_component_class_notification_iterator_next_method)( + struct bt_notification_iterator *iterator); + +typedef enum bt_notification_iterator_status + (*bt_component_class_notification_iterator_seek_time_method)( + struct bt_notification_iterator *iterator, int64_t time); + +typedef struct bt_value *(*bt_component_class_query_method)( + struct bt_component_class *component_class, + const char *object, 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 struct bt_component_class *bt_component_class_create( - enum bt_component_type type, const char *name, - const char *description, bt_component_init_cb init); +extern int bt_component_class_set_destroy_method( + struct bt_component_class *component_class, + bt_component_class_destroy_method destroy_method); + +extern int bt_component_class_set_description( + struct bt_component_class *component_class, + const char *description); + +extern int bt_component_class_set_help( + struct bt_component_class *component_class, + const char *help); + +extern int bt_component_class_freeze( + struct bt_component_class *component_class); /** * Get a component class' name. @@ -75,13 +117,28 @@ extern const char *bt_component_class_get_name( extern const char *bt_component_class_get_description( 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_method( + struct bt_component_class *component_class, + bt_component_class_query_method query_method); + +extern struct bt_value *bt_component_class_query( + struct bt_component_class *component_class, + const char *object, struct bt_value *params); + /** * Get a component class' type. * * @param component_class Component class of which to get the type * @returns One of #bt_component_type */ -extern enum bt_component_type bt_component_class_get_type( +extern enum bt_component_class_type bt_component_class_get_type( struct bt_component_class *component_class); +#ifdef __cplusplus +} +#endif + #endif /* BABELTRACE_COMPONENT_COMPONENT_CLASS_H */