+ component->input_ports = g_ptr_array_new_with_free_func(
+ bt_object_release);
+ if (!component->input_ports) {
+ BT_PUT(component);
+ goto end;
+ }
+
+ component->output_ports = g_ptr_array_new_with_free_func(
+ bt_object_release);
+ if (!component->output_ports) {
+ BT_PUT(component);
+ goto end;
+ }
+
+ if (type == BT_COMPONENT_CLASS_TYPE_SOURCE ||
+ type == BT_COMPONENT_CLASS_TYPE_FILTER) {
+ default_port = bt_component_add_port(component,
+ component->output_ports, BT_PORT_TYPE_OUTPUT,
+ DEFAULT_OUTPUT_PORT_NAME);
+ if (!default_port) {
+ BT_PUT(component);
+ goto end;
+ }
+
+ BT_PUT(default_port);
+ }
+
+ if (type == BT_COMPONENT_CLASS_TYPE_FILTER ||
+ type == BT_COMPONENT_CLASS_TYPE_SINK) {
+ default_port = bt_component_add_port(component,
+ component->input_ports, BT_PORT_TYPE_INPUT,
+ DEFAULT_INPUT_PORT_NAME);
+ if (!default_port) {
+ BT_PUT(component);
+ goto end;
+ }
+
+ BT_PUT(default_port);
+ }
+
+ component->initializing = true;
+