return ret;
}
-int bt_component_class_source_set_notification_iterator_seek_time_method(
- struct bt_component_class *component_class,
- bt_component_class_notification_iterator_seek_time_method notification_iterator_seek_time_method)
-{
- struct bt_component_class_source *source_class;
- int ret = 0;
-
- if (!component_class) {
- BT_LOGW_STR("Invalid parameter: component class is NULL.");
- ret = -1;
- goto end;
- }
-
- if (!notification_iterator_seek_time_method) {
- BT_LOGW_STR("Invalid parameter: method is NULL.");
- ret = -1;
- goto end;
- }
-
- if (component_class->type != BT_COMPONENT_CLASS_TYPE_SOURCE) {
- BT_LOGW("Invalid parameter: component class is not a source component class: "
- "addr=%p, name=\"%s\", type=%s",
- component_class,
- bt_component_class_get_name(component_class),
- bt_component_class_type_string(component_class->type));
- ret = -1;
- goto end;
- }
-
- if (component_class->frozen) {
- BT_LOGW("Invalid parameter: component class is frozen: "
- "addr=%p, name=\"%s\", type=%s",
- component_class,
- bt_component_class_get_name(component_class),
- bt_component_class_type_string(component_class->type));
- ret = -1;
- goto end;
- }
-
- source_class = container_of(component_class,
- struct bt_component_class_source, parent);
- source_class->methods.iterator.seek_time =
- notification_iterator_seek_time_method;
- BT_LOGV("Set source component class's notification iterator seek time method: "
- "addr=%p, name=\"%s\", method-addr=%p",
- component_class,
- bt_component_class_get_name(component_class),
- notification_iterator_seek_time_method);
-
-end:
- return ret;
-}
-
int bt_component_class_filter_set_notification_iterator_init_method(
struct bt_component_class *component_class,
bt_component_class_notification_iterator_init_method notification_iterator_init_method)
return ret;
}
-int bt_component_class_filter_set_notification_iterator_seek_time_method(
- struct bt_component_class *component_class,
- bt_component_class_notification_iterator_seek_time_method notification_iterator_seek_time_method)
-{
- struct bt_component_class_filter *filter_class;
- int ret = 0;
-
- if (!component_class) {
- BT_LOGW_STR("Invalid parameter: component class is NULL.");
- ret = -1;
- goto end;
- }
-
- if (!notification_iterator_seek_time_method) {
- BT_LOGW_STR("Invalid parameter: method is NULL.");
- ret = -1;
- goto end;
- }
-
- if (component_class->type != BT_COMPONENT_CLASS_TYPE_FILTER) {
- BT_LOGW("Invalid parameter: component class is not a filter component class: "
- "addr=%p, name=\"%s\", type=%s",
- component_class,
- bt_component_class_get_name(component_class),
- bt_component_class_type_string(component_class->type));
- ret = -1;
- goto end;
- }
-
- if (component_class->frozen) {
- BT_LOGW("Invalid parameter: component class is frozen: "
- "addr=%p, name=\"%s\", type=%s",
- component_class,
- bt_component_class_get_name(component_class),
- bt_component_class_type_string(component_class->type));
- ret = -1;
- goto end;
- }
-
- filter_class = container_of(component_class,
- struct bt_component_class_filter, parent);
- filter_class->methods.iterator.seek_time =
- notification_iterator_seek_time_method;
- BT_LOGV("Set filter component class's notification iterator seek time method: "
- "addr=%p, name=\"%s\", method-addr=%p",
- component_class,
- bt_component_class_get_name(component_class),
- notification_iterator_seek_time_method);
-
-end:
- return ret;
-}
-
int bt_component_class_set_description(
struct bt_component_class *component_class,
const char *description)
end:
return ret;
}
-
-struct bt_value *bt_component_class_query(
- struct bt_component_class *component_class,
- const char *object, struct bt_value *params)
-{
- struct bt_value *results = NULL;
-
- if (!component_class) {
- BT_LOGW_STR("Invalid parameter: component class is NULL.");
- goto end;
- }
-
- if (!object) {
- BT_LOGW_STR("Invalid parameter: object string is NULL.");
- goto end;
- }
-
- if (!params) {
- BT_LOGW_STR("Invalid parameter: parameters value is NULL.");
- goto end;
- }
-
- if (!component_class->methods.query) {
- /* Not an error: nothing to query */
- BT_LOGD("Component class has no registered query method: "
- "addr=%p, name=\"%s\", type=%s",
- component_class,
- bt_component_class_get_name(component_class),
- bt_component_class_type_string(component_class->type));
- goto end;
- }
-
- BT_LOGD("Calling user's query method: "
- "comp-class-addr=%p, comp-class-name=\"%s\", comp-class-type=%s"
- "object=\"%s\", params-addr=%p",
- component_class,
- bt_component_class_get_name(component_class),
- bt_component_class_type_string(component_class->type),
- object, params);
- results = component_class->methods.query(component_class,
- object, params);
- BT_LOGD("User method returned: results-addr=%p", results);
-
-end:
- return results;
-}