case BT_COMPONENT_CLASS_TYPE_SOURCE:
{
struct bt_component_class_source *source_class;
- enum bt_component_status ret_component;
+ enum bt_notification_iterator_status status;
source_class = container_of(class, struct bt_component_class_source, parent);
- assert(source_class->methods.init_iterator);
- ret_component =
- source_class->methods.init_iterator(component, iterator);
- if (ret_component != BT_COMPONENT_STATUS_OK) {
+ assert(source_class->methods.iterator.init);
+ status = source_class->methods.iterator.init(component,
+ iterator);
+ if (status < 0) {
goto error;
}
break;
-
- break;
}
case BT_COMPONENT_CLASS_TYPE_FILTER:
{
struct bt_component_class_filter *filter_class;
- enum bt_component_status ret_component;
+ enum bt_notification_iterator_status status;
filter_class = container_of(class, struct bt_component_class_filter, parent);
- assert(filter_class->methods.init_iterator);
- ret_component =
- filter_class->methods.init_iterator(component, iterator);
- if (ret_component != BT_COMPONENT_STATUS_OK) {
+ assert(filter_class->methods.iterator.init);
+ status = filter_class->methods.iterator.init(component,
+ iterator);
+ if (status < 0) {
goto error;
}
break;
return iterator;
}
-struct bt_component *bt_component_create(
+struct bt_component *bt_component_create_with_init_method_data(
struct bt_component_class *component_class, const char *name,
- struct bt_value *params)
+ struct bt_value *params, void *init_method_data)
{
int ret;
struct bt_component *component = NULL;
goto end;
}
-
type = bt_component_class_get_type(component_class);
if (type <= BT_COMPONENT_CLASS_TYPE_UNKNOWN ||
type > BT_COMPONENT_CLASS_TYPE_FILTER) {
component->initializing = true;
if (component_class->methods.init) {
- ret = component_class->methods.init(component, params);
+ ret = component_class->methods.init(component, params,
+ init_method_data);
component->initializing = false;
if (ret != BT_COMPONENT_STATUS_OK) {
BT_PUT(component);
return component;
}
+struct bt_component *bt_component_create(
+ struct bt_component_class *component_class, const char *name,
+ struct bt_value *params)
+{
+ return bt_component_create_with_init_method_data(component_class, name,
+ params, NULL);
+}
+
const char *bt_component_get_name(struct bt_component *component)
{
const char *ret = NULL;