summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <jensg@openismus.com>2012-10-24 10:45:25 +0200
committerJens Georg <jensg@openismus.com>2012-10-24 10:45:25 +0200
commitaaabe94ffedc17727f56e3b87d1bb295c28ba076 (patch)
tree2f2d03d7bbe68f355d6545e1879a1e2d45e0967e
parentcc9f1e881282d14291c0b63f4c1deea39ec24099 (diff)
downloadrygel-RYGEL_0_17_0_w43.tar.gz
wip: Add tracking to media-exportRYGEL_0_17_0_w43
-rw-r--r--src/plugins/media-export/Makefile.am1
-rw-r--r--src/plugins/media-export/rygel-media-export-harvesting-task.vala6
-rw-r--r--src/plugins/media-export/rygel-media-export-plugin.vala3
-rw-r--r--src/plugins/media-export/rygel-media-export-root-container.vala32
-rw-r--r--src/plugins/media-export/rygel-media-export-writable-db-container.vala10
5 files changed, 26 insertions, 26 deletions
diff --git a/src/plugins/media-export/Makefile.am b/src/plugins/media-export/Makefile.am
index 3294d1fe..eccfd739 100644
--- a/src/plugins/media-export/Makefile.am
+++ b/src/plugins/media-export/Makefile.am
@@ -15,6 +15,7 @@ librygel_media_export_la_SOURCES = \
rygel-media-export-database-cursor.vala \
rygel-media-export-sqlite-wrapper.vala \
rygel-media-export-db-container.vala \
+ rygel-media-export-trackable-db-container.vala \
rygel-media-export-sql-factory.vala \
rygel-media-export-media-cache.vala \
rygel-media-export-sql-operator.vala \
diff --git a/src/plugins/media-export/rygel-media-export-harvesting-task.vala b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
index a0fdb67b..dbd34b40 100644
--- a/src/plugins/media-export/rygel-media-export-harvesting-task.vala
+++ b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
@@ -309,11 +309,7 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
if (item != null) {
item.parent_ref = this.containers.peek_head ();
- try {
- this.cache.save_item (item);
- } catch (Error error) {
- // Ignore it for now
- }
+ (item as UpdatableObject).commit.begin ();
}
this.files.poll ();
diff --git a/src/plugins/media-export/rygel-media-export-plugin.vala b/src/plugins/media-export/rygel-media-export-plugin.vala
index 42df8b35..d56ec423 100644
--- a/src/plugins/media-export/rygel-media-export-plugin.vala
+++ b/src/plugins/media-export/rygel-media-export-plugin.vala
@@ -108,6 +108,7 @@ public class Rygel.MediaExport.Plugin : Rygel.MediaServerPlugin {
base (RootContainer.get_instance (),
NAME,
null,
- PluginCapabilities.UPLOAD);
+ PluginCapabilities.UPLOAD |
+ PluginCapabilities.TRACK_CHANGES);
}
}
diff --git a/src/plugins/media-export/rygel-media-export-root-container.vala b/src/plugins/media-export/rygel-media-export-root-container.vala
index e39e2c1f..b6d79bca 100644
--- a/src/plugins/media-export/rygel-media-export-root-container.vala
+++ b/src/plugins/media-export/rygel-media-export-root-container.vala
@@ -40,7 +40,7 @@ const Rygel.MediaExport.FolderDefinition[] virtual_folders_music = {
/**
* Represents the root container.
*/
-public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer {
+public class Rygel.MediaExport.RootContainer : TrackableDBContainer {
private DBusService service;
private Harvester harvester;
private Cancellable cancellable;
@@ -366,14 +366,13 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer {
this.media_db.save_container (this);
} catch (Error error) { } // do nothing
- try {
- this.filesystem_container = new DBContainer
- (media_db,
- FILESYSTEM_FOLDER_ID,
- _(FILESYSTEM_FOLDER_NAME));
- this.filesystem_container.parent = this;
- this.media_db.save_container (this.filesystem_container);
- } catch (Error error) { }
+ this.filesystem_container = new TrackableDBContainer
+ (media_db,
+ FILESYSTEM_FOLDER_ID,
+ _(FILESYSTEM_FOLDER_NAME));
+ this.filesystem_container.parent = this;
+ //this.media_db.save_container (this.filesystem_container);
+ this.add_child_tracked.begin (this.filesystem_container);
ArrayList<string> ids;
try {
@@ -395,21 +394,20 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer {
foreach (var id in ids) {
debug ("ID %s no longer in config; deleting...", id);
- try {
- this.media_db.remove_by_id (id);
- } catch (DatabaseError error) {
- warning (_("Failed to remove entry: %s"), error.message);
- }
+ var container = new NullContainer ();
+ container.parent = this;
+ container.id = id;
+ this.remove_child_tracked.begin (container);
}
- this.updated ();
+ //this.updated ();
}
private void on_initial_harvesting_done () {
this.harvester.disconnect (this.harvester_signal_id);
this.media_db.debug_statistics ();
this.add_default_virtual_folders ();
- this.updated ();
+ //this.updated ();
this.filesystem_container.container_updated.connect( () => {
this.add_default_virtual_folders ();
@@ -478,7 +476,7 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer {
if (this.media_db.get_child_count (container.id) == 0) {
this.media_db.remove_by_id (container.id);
} else {
- container.updated ();
+ this.updated (container, ObjectEventType.ADDED);
}
}
}
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 f3c3073a..f37c1703 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
@@ -21,7 +21,7 @@
*/
using Gee;
-internal class Rygel.MediaExport.WritableDbContainer : DBContainer,
+internal class Rygel.MediaExport.WritableDbContainer : TrackableDBContainer,
Rygel.WritableContainer {
public ArrayList<string> create_classes { get; set; }
@@ -45,11 +45,15 @@ internal class Rygel.MediaExport.WritableDbContainer : DBContainer,
item.modified = int64.MAX;
}
item.id = MediaCache.get_id (file);
- this.media_db.save_item (item);
+ this.add_child_tracked.begin (item);
}
public async void remove_item (string id, Cancellable? cancellable)
throws Error {
- this.media_db.remove_by_id (id);
+ var container = new NullContainer ();
+ container.parent = this;
+ container.id = id;
+
+ this.remove_child_tracked.begin (container);
}
}