+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.input_port_connected =
+ cur_cc_descr_attr->value.filter_input_port_connected_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_SINK:
+ cc_full_descr->methods.sink.input_port_connected =
+ cur_cc_descr_attr->value.sink_input_port_connected_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ cc_full_descr->methods.source.output_port_connected =
+ cur_cc_descr_attr->value.source_output_port_connected_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.output_port_connected =
+ cur_cc_descr_attr->value.filter_output_port_connected_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_DISCONNECTED_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.input_port_disconnected =
+ cur_cc_descr_attr->value.filter_input_port_disconnected_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_SINK:
+ cc_full_descr->methods.sink.input_port_disconnected =
+ cur_cc_descr_attr->value.sink_input_port_disconnected_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_DISCONNECTED_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ cc_full_descr->methods.source.output_port_disconnected =
+ cur_cc_descr_attr->value.source_output_port_disconnected_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.output_port_disconnected =
+ cur_cc_descr_attr->value.filter_output_port_disconnected_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_INIT_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ cc_full_descr->methods.source.notif_iter_init =
+ cur_cc_descr_attr->value.source_notif_iter_init_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.notif_iter_init =
+ cur_cc_descr_attr->value.filter_notif_iter_init_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_FINALIZE_METHOD:
+ switch (cc_type) {
+ case BT_COMPONENT_CLASS_TYPE_SOURCE:
+ cc_full_descr->methods.source.notif_iter_finalize =
+ cur_cc_descr_attr->value.source_notif_iter_finalize_method;
+ break;
+ case BT_COMPONENT_CLASS_TYPE_FILTER:
+ cc_full_descr->methods.filter.notif_iter_finalize =
+ cur_cc_descr_attr->value.filter_notif_iter_finalize_method;
+ break;
+ default:
+ abort();
+ }
+ break;
+ default:
+ /*
+ * WARN-level logging because this
+ * should not happen with the
+ * appropriate ABI version. If we're
+ * here, we know that for the reported
+ * version of the ABI, this attribute is
+ * unknown.
+ */
+ BT_LOGW("Ignoring unknown component class descriptor attribute: "
+ "plugin-path=\"%s\", "
+ "plugin-name=\"%s\", "
+ "comp-class-name=\"%s\", "
+ "comp-class-type=%s, "
+ "attr-type-name=\"%s\", "
+ "attr-type-id=%d",
+ spec->shared_lib_handle->path ?
+ spec->shared_lib_handle->path->str :
+ NULL,
+ descriptor->name,
+ cur_cc_descr_attr->comp_class_descriptor->name,
+ bt_component_class_type_string(
+ cur_cc_descr_attr->comp_class_descriptor->type),
+ cur_cc_descr_attr->type_name,
+ cur_cc_descr_attr->type);
+ break;