core: ProtocolInfo provided by TranscodeManager
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Tue, 28 Jul 2009 21:51:12 +0000 (00:51 +0300)
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Tue, 28 Jul 2009 21:51:12 +0000 (00:51 +0300)
ProtocolInfo is now completely provided by TranscodeManager and it's
deriving classes.

src/rygel/rygel-connection-manager.vala
src/rygel/rygel-http-server.vala
src/rygel/rygel-transcode-manager.vala

index 2b2bdbe..f378131 100644 (file)
@@ -39,14 +39,7 @@ public class Rygel.ConnectionManager : Service {
 
     protected string source_protocol_info {
         owned get {
-            var protocol_info = "http-get:*:*:*";
-            TranscodeManager tm = get_transcode_manager ();
-
-            if (tm != null) {
-                protocol_info += tm.get_protocol_info ();
-            }
-
-            return protocol_info;
+            return this.get_http_server ().get_protocol_info ();
         }
     }
 
@@ -126,8 +119,8 @@ public class Rygel.ConnectionManager : Service {
         action.return ();
     }
 
-    private TranscodeManager? get_transcode_manager () {
-        TranscodeManager manager = null;
+    private HTTPServer get_http_server () {
+        HTTPServer server = null;
 
         var root_device = (Rygel.RootDevice) this.root_device;
 
@@ -135,10 +128,10 @@ public class Rygel.ConnectionManager : Service {
         foreach (var service in root_device.services) {
             if (service.get_type().is_a (typeof (Rygel.ContentDirectory))) {
                 var content_directory = (Rygel.ContentDirectory) service;
-                manager = (TranscodeManager) content_directory.http_server;
+                server = content_directory.http_server;
             }
         }
 
-        return manager;
+        return server;
     }
 }
index c27bd41..829ba94 100644 (file)
@@ -124,6 +124,16 @@ internal class Rygel.HTTPServer : Rygel.TranscodeManager, Rygel.StateMachine {
         return create_uri_for_path (query);
     }
 
+    internal override string get_protocol_info () {
+        var protocol_info = "http-get:*:*:*";
+        var base_info = base.get_protocol_info ();
+
+        if (base_info != "")
+            protocol_info += "," + base_info;
+
+        return protocol_info;
+    }
+
     private void on_request_completed (HTTPRequest request) {
         /* Remove the request from our list. */
         this.requests.remove (request);
index c376d2b..fa37105 100644 (file)
@@ -99,11 +99,14 @@ internal abstract class Rygel.TranscodeManager : GLib.Object {
         return transcoder;
     }
 
-    public string get_protocol_info () {
+    internal virtual string get_protocol_info () {
         string protocol_info = "";
 
         foreach (var transcoder in this.transcoders) {
-            protocol_info += ",http-get:*:" + transcoder.mime_type +
+            if (protocol_info != "")   // No comma before the first one
+                protocol_info += ",";
+
+            protocol_info += "http-get:*:" + transcoder.mime_type +
                              ":DLNA.ORG_PN=" + transcoder.dlna_profile;
         }