[rygel/wip/track-changes: 1/2] server: Get ServiceResetToken from RootContainer
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel/wip/track-changes: 1/2] server: Get ServiceResetToken from RootContainer
- Date: Thu, 6 Dec 2012 13:15:06 +0000 (UTC)
commit 529d1019edabf29525fda49e23ff893ea1a3a583
Author: Jens Georg <jensg openismus com>
Date: Thu Dec 6 14:02:51 2012 +0100
server: Get ServiceResetToken from RootContainer
https://bugzilla.gnome.org/show_bug.cgi?id=689134
src/librygel-server/rygel-content-directory.vala | 12 ++++++++++-
src/librygel-server/rygel-trackable-container.vala | 22 ++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletions(-)
---
diff --git a/src/librygel-server/rygel-content-directory.vala b/src/librygel-server/rygel-content-directory.vala
index 6de630e..93ae102 100644
--- a/src/librygel-server/rygel-content-directory.vala
+++ b/src/librygel-server/rygel-content-directory.vala
@@ -116,7 +116,12 @@ internal class Rygel.ContentDirectory: Service {
"http://www.upnp.org/schemas/av/avs-v1-20060531.xsd\">" +
"</Features>";
- this.service_reset_token = UUID.get ();
+ if (this.root_container is TrackableContainer) {
+ var trackable = this.root_container as TrackableContainer;
+ this.service_reset_token = trackable.get_service_reset_token ();
+ } else {
+ this.service_reset_token = UUID.get ();
+ }
this.action_invoked["Browse"].connect (this.browse_cb);
this.action_invoked["Search"].connect (this.search_cb);
@@ -609,6 +614,11 @@ internal class Rygel.ContentDirectory: Service {
var plugin = this.root_device.resource_factory as MediaServerPlugin;
plugin.active = false;
this.service_reset_token = UUID.get ();
+ if (this.root_container is TrackableContainer) {
+ var trackable = this.root_container as TrackableContainer;
+ trackable.set_service_reset_token (this.service_reset_token);
+ }
+
var expression = new RelationalExpression ();
expression.operand1 = "upnp:objectUpdateID";
expression.operand2 = "true";
diff --git a/src/librygel-server/rygel-trackable-container.vala b/src/librygel-server/rygel-trackable-container.vala
index 952d7a4..dbd6371 100644
--- a/src/librygel-server/rygel-trackable-container.vala
+++ b/src/librygel-server/rygel-trackable-container.vala
@@ -64,6 +64,28 @@ public interface Rygel.TrackableContainer : Rygel.MediaContainer {
this.updated ();
}
+ /**
+ * Used to query the (persisted) service reset token from the plug-in.
+ *
+ * If a plugin implements PLUGIN_CAPABILITIES_TRACK_CHANGES, it should
+ * persist the ServiceResetToken. To do this override this virtual
+ * function in the root container implementation and provide the persisted
+ * version.
+ */
+ public virtual string get_service_reset_token () {
+ return UUID.get ();
+ }
+
+ /**
+ * Set a new service reset token.
+ *
+ * If the service reset procedure has to be performed, the content
+ * directory service will set the new service reset token.
+ *
+ * @param token the new service reset token.
+ */
+ public virtual void set_service_reset_token (string token) {}
+
private void thaw_events () {
// Forward events.
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]