From: Zeeshan Ali (Khattak) Date: Wed, 28 Jan 2009 12:32:10 +0000 (+0000) Subject: Decide priority based on requested transfer mode. X-Git-Tag: RYGEL_0_2_2~162 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=da3bd6593e4b148867e18014b8bc7465293b0aaa;p=profile%2Fivi%2Frygel.git Decide priority based on requested transfer mode. svn path=/trunk/; revision=481 --- diff --git a/src/rygel/rygel-seekable-response.vala b/src/rygel/rygel-seekable-response.vala index 1ab0c5a..be8c9a8 100644 --- a/src/rygel/rygel-seekable-response.vala +++ b/src/rygel/rygel-seekable-response.vala @@ -32,6 +32,8 @@ public class Rygel.SeekableResponse : Rygel.HTTPResponse { private char[] buffer; private size_t length; + int priority; + public SeekableResponse (Soup.Server server, Soup.Message msg, string uri, @@ -41,6 +43,7 @@ public class Rygel.SeekableResponse : Rygel.HTTPResponse { this.seek = seek; this.length = file_length; + this.priority = this.get_requested_priority (); if (seek != null) { this.length = (size_t) seek.length; @@ -51,7 +54,7 @@ public class Rygel.SeekableResponse : Rygel.HTTPResponse { this.buffer = new char[this.length]; this.file = File.new_for_uri (uri); - this.file.read_async (Priority.DEFAULT, null, this.on_file_read); + this.file.read_async (this.priority, null, this.on_file_read); } private void on_file_read (GLib.Object source_object, @@ -85,7 +88,7 @@ public class Rygel.SeekableResponse : Rygel.HTTPResponse { input_stream.read_async (this.buffer, this.length, - Priority.DEFAULT, + this.priority, null, on_contents_read); } @@ -106,7 +109,7 @@ public class Rygel.SeekableResponse : Rygel.HTTPResponse { this.push_data (this.buffer, this.length); - input_stream.close_async (Priority.DEFAULT, + input_stream.close_async (this.priority, null, on_input_stream_closed); } @@ -125,5 +128,19 @@ public class Rygel.SeekableResponse : Rygel.HTTPResponse { this.end (false, Soup.KnownStatusCode.NONE); } + + private int get_requested_priority () { + var mode = this.msg.request_headers.get ("transferMode.dlna.org"); + + if (mode == null || mode == "Interactive") { + return Priority.DEFAULT; + } else if (mode == "Streaming") { + return Priority.HIGH; + } else if (mode == "Background") { + return Priority.LOW; + } else { + return Priority.DEFAULT; + } + } }