[rygel] core,plugin: Simplify MediaServer implementation
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] core,plugin: Simplify MediaServer implementation
- Date: Sun, 1 Aug 2010 16:59:59 +0000 (UTC)
commit 732a1c8d736d27ef2c93f1594c50db85b5dfde18
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date: Sun Aug 1 04:26:14 2010 +0300
core,plugin: Simplify MediaServer implementation
We no longer require plugins to provide a ContentDirectory service but
instead they need to always subclass Plugin class and implement it's
'get_root_container' method.
src/plugins/external/Makefile.am | 3 +-
.../external/rygel-external-content-dir.vala | 47 --------------------
src/plugins/external/rygel-external-plugin.vala | 13 +++++-
src/plugins/gst-launch/Makefile.am | 1 -
.../gst-launch/rygel-gst-launch-content-dir.vala | 34 --------------
.../gst-launch/rygel-gst-launch-plugin.vala | 15 +++++-
.../media-export/rygel-media-export-plugin.vala | 14 ++++--
src/plugins/mediathek/rygel-mediathek-plugin.vala | 15 ++++---
src/plugins/test/Makefile.am | 3 +-
src/plugins/test/rygel-test-content-dir.vala | 38 ----------------
src/plugins/test/rygel-test-plugin.vala | 15 +++++-
src/plugins/tracker/Makefile.am | 4 +-
.../tracker/rygel-tracker-content-directory.vala | 38 ----------------
src/plugins/tracker/rygel-tracker-plugin.vala | 8 +++-
src/rygel/rygel-content-directory.vala | 14 +++---
src/rygel/rygel-media-server-plugin.vala | 8 +++-
16 files changed, 76 insertions(+), 194 deletions(-)
---
diff --git a/src/plugins/external/Makefile.am b/src/plugins/external/Makefile.am
index 1307c11..397f888 100644
--- a/src/plugins/external/Makefile.am
+++ b/src/plugins/external/Makefile.am
@@ -17,8 +17,7 @@ AM_CFLAGS = $(LIBGUPNP_CFLAGS) \
-I$(top_srcdir)/src/rygel -DDATA_DIR='"$(shareddir)"' \
-include config.h
-librygel_external_la_SOURCES = rygel-external-content-dir.vala \
- rygel-external-container.vala \
+librygel_external_la_SOURCES = rygel-external-container.vala \
rygel-external-dummy-container.vala \
rygel-external-item-factory.vala \
rygel-external-thumbnail-factory.vala \
diff --git a/src/plugins/external/rygel-external-plugin.vala b/src/plugins/external/rygel-external-plugin.vala
index 6078fb0..c9539cd 100644
--- a/src/plugins/external/rygel-external-plugin.vala
+++ b/src/plugins/external/rygel-external-plugin.vala
@@ -40,7 +40,6 @@ public class Rygel.External.Plugin : Rygel.MediaServerPlugin {
IconInfo? icon) {
base (service_name,
title,
- typeof (ContentDir),
"Rygel External " + title);
this.service_name = service_name;
@@ -51,4 +50,16 @@ public class Rygel.External.Plugin : Rygel.MediaServerPlugin {
this.add_icon (icon);
}
}
+
+ public override MediaContainer? get_root_container (
+ ContentDirectory content_dir) {
+ return new Container ("0",
+ this.title,
+ this.child_count,
+ this.searchable,
+ this.service_name,
+ this.root_object,
+ content_dir.context.host_ip,
+ null);
+ }
}
diff --git a/src/plugins/gst-launch/Makefile.am b/src/plugins/gst-launch/Makefile.am
index a512eac..575d925 100644
--- a/src/plugins/gst-launch/Makefile.am
+++ b/src/plugins/gst-launch/Makefile.am
@@ -14,7 +14,6 @@ AM_CFLAGS = $(LIBGUPNP_CFLAGS) \
librygel_gst_launch_la_SOURCES = rygel-gst-launch-plugin.vala \
rygel-gst-launch-root-container.vala \
- rygel-gst-launch-content-dir.vala \
rygel-gst-launch-item.vala
librygel_gst_launch_la_VALAFLAGS = --vapidir=$(top_srcdir)/src/rygel \
diff --git a/src/plugins/gst-launch/rygel-gst-launch-plugin.vala b/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
index 471653a..10a59b3 100644
--- a/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
+++ b/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
@@ -24,9 +24,18 @@ using Rygel;
using Gee;
public void module_init (PluginLoader loader) {
- var plugin = new MediaServerPlugin ("GstLaunch",
- "Gst Launch",
- typeof (GstLaunch.ContentDir));
+ var plugin = new GstLaunch.Plugin ();
+
loader.add_plugin (plugin);
}
+public class Rygel.GstLaunch.Plugin : Rygel.MediaServerPlugin {
+ public Plugin () {
+ base ("GstLaunch", "Gst Launch");
+ }
+
+ public override MediaContainer? get_root_container (
+ ContentDirectory content_dir) {
+ return new RootContainer (this.title);
+ }
+}
diff --git a/src/plugins/media-export/rygel-media-export-plugin.vala b/src/plugins/media-export/rygel-media-export-plugin.vala
index 26ca5ea..5e93017 100644
--- a/src/plugins/media-export/rygel-media-export-plugin.vala
+++ b/src/plugins/media-export/rygel-media-export-plugin.vala
@@ -28,14 +28,18 @@ using GLib;
*
*/
public void module_init (PluginLoader loader) {
- var plugin = new MediaServerPlugin ("MediaExport",
- _("@REALNAME@'s media"),
- typeof (Rygel.MediaExport.ContentDir));
+ var plugin = new MediaExport.Plugin ();
+
loader.add_plugin (plugin);
}
-public class Rygel.MediaExport.ContentDir : ContentDirectory {
- public override MediaContainer? create_root_container () {
+public class Rygel.MediaExport.Plugin : Rygel.MediaServerPlugin {
+ public Plugin () {
+ base ("MediaExport", _("@REALNAME@'s media"));
+ }
+
+ public override MediaContainer? get_root_container (
+ ContentDirectory content_dir) {
return RootContainer.get_instance ();
}
}
diff --git a/src/plugins/mediathek/rygel-mediathek-plugin.vala b/src/plugins/mediathek/rygel-mediathek-plugin.vala
index 4b9c22e..86f7da2 100644
--- a/src/plugins/mediathek/rygel-mediathek-plugin.vala
+++ b/src/plugins/mediathek/rygel-mediathek-plugin.vala
@@ -24,15 +24,18 @@ using Rygel;
using GUPnP;
public void module_init (PluginLoader loader) {
- var plugin = new MediaServerPlugin ("ZDFMediathek",
- "ZDF Mediathek",
- typeof (Mediathek.ContentDir));
+ var plugin = new Mediathek.Plugin ();
+
loader.add_plugin (plugin);
}
-public class Rygel.Mediathek.ContentDir : ContentDirectory {
- public override MediaContainer? create_root_container () {
+public class Rygel.Mediathek.Plugin : Rygel.MediaServerPlugin {
+ public Plugin () {
+ base ("ZDFMediathek", "ZDF Mediathek");
+ }
+
+ public override MediaContainer? get_root_container (
+ ContentDirectory content_dir) {
return RootContainer.get_instance ();
}
}
-
diff --git a/src/plugins/test/Makefile.am b/src/plugins/test/Makefile.am
index 9c6078b..77e6fae 100644
--- a/src/plugins/test/Makefile.am
+++ b/src/plugins/test/Makefile.am
@@ -17,8 +17,7 @@ AM_CFLAGS = $(LIBGUPNP_CFLAGS) \
-I$(top_srcdir)/src/rygel -DDATA_DIR='"$(shareddir)"' \
-include config.h
-librygel_test_la_SOURCES = rygel-test-content-dir.vala \
- rygel-test-root-container.vala \
+librygel_test_la_SOURCES = rygel-test-root-container.vala \
rygel-test-item.vala \
rygel-test-audio-item.vala \
rygel-test-video-item.vala \
diff --git a/src/plugins/test/rygel-test-plugin.vala b/src/plugins/test/rygel-test-plugin.vala
index 9a02d07..ad57e66 100644
--- a/src/plugins/test/rygel-test-plugin.vala
+++ b/src/plugins/test/rygel-test-plugin.vala
@@ -26,9 +26,18 @@ using Rygel;
using Gee;
public void module_init (PluginLoader loader) {
- var plugin = new MediaServerPlugin("Test",
- "Test Streams",
- typeof (Rygel.Test.ContentDir));
+ var plugin = new Rygel.Test.Plugin ();
+
loader.add_plugin (plugin);
}
+public class Rygel.Test.Plugin : Rygel.MediaServerPlugin {
+ public Plugin () {
+ base ("Test", "Test Streams");
+ }
+
+ public override MediaContainer? get_root_container (
+ ContentDirectory content_dir) {
+ return new RootContainer (this.title);
+ }
+}
diff --git a/src/plugins/tracker/Makefile.am b/src/plugins/tracker/Makefile.am
index b6adfbc..315e6e4 100644
--- a/src/plugins/tracker/Makefile.am
+++ b/src/plugins/tracker/Makefile.am
@@ -11,9 +11,7 @@ AM_CFLAGS = $(LIBGUPNP_CFLAGS) \
-I$(top_srcdir)/src/rygel -DDATA_DIR='"$(datadir)"' \
-include config.h
-librygel_media_tracker_la_SOURCES = \
- rygel-tracker-content-directory.vala \
- rygel-tracker-root-container.vala \
+librygel_media_tracker_la_SOURCES = rygel-tracker-root-container.vala \
rygel-tracker-category-container.vala \
rygel-tracker-music.vala \
rygel-tracker-videos.vala \
diff --git a/src/plugins/tracker/rygel-tracker-plugin.vala b/src/plugins/tracker/rygel-tracker-plugin.vala
index d65aa47..b31f4a2 100644
--- a/src/plugins/tracker/rygel-tracker-plugin.vala
+++ b/src/plugins/tracker/rygel-tracker-plugin.vala
@@ -31,8 +31,7 @@ public class Rygel.Tracker.Plugin : Rygel.MediaServerPlugin {
base ("Tracker",
// @REALNAME@ is substituted for user's real name
// and it doesn't need translation.
- _("@REALNAME@'s media"),
- typeof (Tracker.ContentDirectory));
+ _("@REALNAME@'s media"));
var icon_info = new IconInfo ("image/png");
@@ -47,5 +46,10 @@ public class Rygel.Tracker.Plugin : Rygel.MediaServerPlugin {
warning (_("Error creating URI from %s: %s"), ICON, err.message);
}
}
+
+ public override MediaContainer? get_root_container (
+ ContentDirectory content_dir) {
+ return new RootContainer (this.title);
+ }
}
diff --git a/src/rygel/rygel-content-directory.vala b/src/rygel/rygel-content-directory.vala
index 46c7edf..fc13591 100644
--- a/src/rygel/rygel-content-directory.vala
+++ b/src/rygel/rygel-content-directory.vala
@@ -66,15 +66,9 @@ public class Rygel.ContentDirectory: Service {
public uint32 system_update_id;
- // Public abstract methods derived classes need to implement
- public virtual MediaContainer? create_root_container () {
- return null;
- }
-
public override void constructed () {
this.cancellable = new Cancellable ();
-
- this.root_container = this.create_root_container ();
+ this.root_container = this.get_root_container ();
try {
this.http_server = new HTTPServer (this, this.get_type ().name ());
@@ -138,6 +132,12 @@ public class Rygel.ContentDirectory: Service {
this.http_server.run.begin ();
}
+ private MediaContainer get_root_container () {
+ var plugin = this.root_device.resource_factory as MediaServerPlugin;
+
+ return plugin.get_root_container (this);
+ }
+
~ContentDirectory () {
// Cancel all state machines
this.cancellable.cancel ();
diff --git a/src/rygel/rygel-media-server-plugin.vala b/src/rygel/rygel-media-server-plugin.vala
index 73aa103..9aa10bf 100644
--- a/src/rygel/rygel-media-server-plugin.vala
+++ b/src/rygel/rygel-media-server-plugin.vala
@@ -27,7 +27,6 @@ public class Rygel.MediaServerPlugin : Rygel.Plugin {
public MediaServerPlugin (string name,
string? title,
- Type content_dir_type,
string? description = null) {
base (MEDIA_SERVER_DESC_PATH, name, title, description);
@@ -35,7 +34,7 @@ public class Rygel.MediaServerPlugin : Rygel.Plugin {
var resource_info = new ResourceInfo (ContentDirectory.UPNP_ID,
ContentDirectory.UPNP_TYPE,
ContentDirectory.DESCRIPTION_PATH,
- content_dir_type);
+ typeof (ContentDirectory));
this.add_resource (resource_info);
// Register Rygel.ConnectionManager
@@ -52,5 +51,10 @@ public class Rygel.MediaServerPlugin : Rygel.Plugin {
typeof (MediaReceiverRegistrar));
this.add_resource (resource_info);
}
+
+ public virtual MediaContainer? get_root_container (
+ ContentDirectory content_dir) {
+ return null;
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]