/** * gssdp_resource_group_add_resource: * @resource_group: An @GSSDPResourceGroup * @target: The resource's target * @usn: The resource's USN * @locations: (element-type utf8): A #GList of the resource's locations * * Adds a resource with target @target, USN @usn, and locations @locations * to @resource_group. * * Return value: The ID of the added resource. **/ guint gssdp_resource_group_add_resource (GSSDPResourceGroup *resource_group, const char *target, const char *usn, GList *locations) { LOGD("gssdp_resource_group_add_resource"); LOGD("gssdp_resource_group_add_resource"); LOGD("gssdp_resource_group_add_resource"); Resource *resource; GList *l; GError *error; g_return_val_if_fail (GSSDP_IS_RESOURCE_GROUP (resource_group), 0); g_return_val_if_fail (target != NULL, 0); g_return_val_if_fail (usn != NULL, 0); g_return_val_if_fail (locations != NULL, 0); resource = g_slice_new0 (Resource); resource->resource_group = resource_group; resource->target = g_strdup (target); resource->usn = g_strdup (usn); error = NULL; resource->target_regex = create_target_regex (target, &resource->version, &error); if (error) { LOGD("Error compiling regular expression for '%s': %s", target, error->message); LOGD("Error compiling regular expression for '%s': %s", target, error->message); LOGD("Error compiling regular expression for '%s': %s", target, error->message); g_warning ("Error compiling regular expression for '%s': %s", target, error->message); g_error_free (error); resource_free (resource); return 0; } resource->initial_byebye_sent = FALSE; for (l = locations; l; l = l->next) { resource->locations = g_list_append (resource->locations, g_strdup (l->data)); } resource_group->priv->resources = g_list_prepend (resource_group->priv->resources, resource); resource->id = ++resource_group->priv->last_resource_id; if (resource_group->priv->available) resource_alive (resource); LOGD("g_list_prepend"); LOGD("g_list_prepend"); LOGD("g_list_prepend"); return resource->id; }
/** * gssdp_resource_group_add_resource: * @resource_group: A #GSSDPResourceGroup * @target: The resource's target * @usn: The resource's USN * @locations: (element-type utf8): A #GList of the resource's locations * * Adds a resource with target @target, USN @usn, and locations @locations * to @resource_group. * * Return value: The ID of the added resource. **/ guint gssdp_resource_group_add_resource (GSSDPResourceGroup *resource_group, const char *target, const char *usn, GList *locations) { GSSDPResourceGroupPrivate *priv = NULL; Resource *resource = NULL; GError *error = NULL; g_return_val_if_fail (GSSDP_IS_RESOURCE_GROUP (resource_group), 0); g_return_val_if_fail (target != NULL, 0); g_return_val_if_fail (usn != NULL, 0); g_return_val_if_fail (locations != NULL, 0); priv = gssdp_resource_group_get_instance_private (resource_group); resource = g_slice_new0 (Resource); resource->resource_group = resource_group; resource->target = g_strdup (target); resource->usn = g_strdup (usn); resource->target_regex = create_target_regex (target, &resource->version, &error); if (error) { g_warning ("Error compiling regular expression for '%s': %s", target, error->message); g_error_free (error); resource_free (resource); return 0; } resource->initial_byebye_sent = FALSE; resource->locations = g_list_copy_deep (locations, (GCopyFunc) g_strdup, NULL); priv->resources = g_list_prepend (priv->resources, resource); resource->id = ++priv->last_resource_id; if (priv->available) resource_alive (resource); return resource->id; }