[banshee] Allow seeking in DAAP streams



commit 7611a5c77df669ac74e117ba1427635e86681749
Author: Neil Loknath <neil loknath gmail com>
Date:   Tue Aug 11 13:12:04 2009 -0600

    Allow seeking in DAAP streams
    
    Signed-off-by: Gabriel Burt <gabriel burt gmail com>

 .../Banshee.Daap/DaapProxyWebServer.cs             |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)
---
diff --git a/src/Extensions/Banshee.Daap/Banshee.Daap/DaapProxyWebServer.cs b/src/Extensions/Banshee.Daap/Banshee.Daap/DaapProxyWebServer.cs
index fd9e970..ba27948 100644
--- a/src/Extensions/Banshee.Daap/Banshee.Daap/DaapProxyWebServer.cs
+++ b/src/Extensions/Banshee.Daap/Banshee.Daap/DaapProxyWebServer.cs
@@ -154,7 +154,14 @@ namespace Banshee.Daap
                     try {
                         DAAP.Track song = database.LookupTrackById(song_id);
                         if(song != null) {
-                            StreamTrack(client, database, song);
+                            long offset = -1;
+                            foreach (string line in body_request) {
+                                if (line.ToLower ().Contains ("range:")) {
+                                    offset = ParseRangeRequest (line);
+                                }
+                            }
+                            
+                            StreamTrack(client, database, song, offset);
                             return;
                         }
                     } catch (Exception e) {
@@ -183,12 +190,17 @@ namespace Banshee.Daap
 
             WriteResponse(client, code, body + GetHtmlFooter());
         }
+
+        protected void StreamTrack(Socket client, DAAP.Database database, DAAP.Track song)
+        {
+            StreamTrack (client, database, song, -1);
+        }
         
-        private void StreamTrack(Socket client, DAAP.Database database, DAAP.Track song)
+        protected virtual void StreamTrack(Socket client, DAAP.Database database, DAAP.Track song, long offset)
         {
             long length;
-            Stream stream = database.StreamTrack(song, out length);
-            WriteResponseStream(client, stream, length, song.FileName);
+            Stream stream = database.StreamTrack(song, offset, out length);
+            WriteResponseStream(client, stream, length, song.FileName, offset < 0 ? 0 : offset);
             stream.Close();
             client.Close();
         }



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