[rygel] media-export: Implement recursive container removal



commit 9398caa653f909de3fe7e442f713124ae9e64187
Author: Jens Georg <jensg openismus com>
Date:   Mon Aug 5 13:16:28 2013 +0200

    media-export: Implement recursive container removal
    
    https://bugzilla.gnome.org/show_bug.cgi?id=703135

 .../rygel-media-export-trackable-db-container.vala |    2 +-
 .../rygel-media-export-writable-db-container.vala  |   14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-trackable-db-container.vala 
b/src/plugins/media-export/rygel-media-export-trackable-db-container.vala
index 7f9dd5a..e96232f 100644
--- a/src/plugins/media-export/rygel-media-export-trackable-db-container.vala
+++ b/src/plugins/media-export/rygel-media-export-trackable-db-container.vala
@@ -80,7 +80,7 @@ public class Rygel.MediaExport.TrackableDbContainer : DBContainer,
         }
     }
 
-    protected async void remove_child (MediaObject object) {
+    protected virtual async void remove_child (MediaObject object) {
         try {
             this.media_db.remove_object (object);
         } catch (Error error) {
diff --git a/src/plugins/media-export/rygel-media-export-writable-db-container.vala 
b/src/plugins/media-export/rygel-media-export-writable-db-container.vala
index afc7ba3..13b5f83 100644
--- a/src/plugins/media-export/rygel-media-export-writable-db-container.vala
+++ b/src/plugins/media-export/rygel-media-export-writable-db-container.vala
@@ -99,6 +99,18 @@ internal class Rygel.MediaExport.WritableDbContainer : TrackableDbContainer,
         this.media_db.make_object_guarded (container);
     }
 
+    protected override async void remove_child (MediaObject object) {
+        yield base.remove_child (object);
+        var file = File.new_for_uri (object.uris[0]);
+        try {
+            yield file.delete_async ();
+        } catch (Error error) {
+            warning (_("Failed to remove file %s: %s"),
+                     file.get_path (),
+                     error.message);
+        }
+    }
+
     public virtual async void remove_item (string id, Cancellable? cancellable)
                                            throws Error {
         var object = this.media_db.get_object (id);
@@ -112,7 +124,7 @@ internal class Rygel.MediaExport.WritableDbContainer : TrackableDbContainer,
     public virtual async void remove_container (string id,
                                                 Cancellable? cancellable)
                                                 throws Error {
-        throw new WritableContainerError.NOT_IMPLEMENTED ("Not supported");
+        yield this.remove_item (id, cancellable);
     }
 
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]