Преглед на файлове

Made WriteStream virtual

LukePulverenti Luke Pulverenti luke pulverenti преди 13 години
родител
ревизия
f9bdf0b6d9
променени са 1 файла, в които са добавени 27 реда и са изтрити 10 реда
  1. 27 10
      MediaBrowser.Common/Net/Handlers/BaseHandler.cs

+ 27 - 10
MediaBrowser.Common/Net/Handlers/BaseHandler.cs

@@ -13,10 +13,36 @@ namespace MediaBrowser.Common.Net.Handlers
         /// </summary>
         public IDictionary<string, string> Headers = new Dictionary<string, string>();
 
+        /// <summary>
+        /// Returns true or false indicating if the handler writes to the stream asynchronously.
+        /// If so the subclass will be responsible for disposing the stream when complete.
+        /// </summary>
+        protected virtual bool IsAsyncHandler
+        {
+            get
+            {
+                return false;
+            }
+        }
+
         /// <summary>
         /// The action to write the response to the output stream
         /// </summary>
-        public Action<Stream> WriteStream { get; set; }
+        public virtual Action<Stream> WriteStream
+        {
+            get
+            {
+                return s =>
+                {
+                    WriteReponse(s);
+
+                    if (!IsAsyncHandler)
+                    {
+                        s.Dispose();
+                    }
+                };
+            }
+        }
 
         /// <summary>
         /// The original RequestContext
@@ -81,15 +107,6 @@ namespace MediaBrowser.Common.Net.Handlers
             }
         }
 
-        public BaseHandler()
-        {
-            WriteStream = s =>
-            {
-                WriteReponse(s);
-                s.Dispose();
-            };
-        }
-
         private void WriteReponse(Stream stream)
         {
             if (CompressResponse)