Commit 5d778739 authored by justcoding121's avatar justcoding121

optimize compression factory

parent f9c7ba4e
namespace Titanium.Web.Proxy.Compression using System;
namespace Titanium.Web.Proxy.Compression
{ {
/// <summary> /// <summary>
/// A factory to generate the compression methods based on the type of compression /// A factory to generate the compression methods based on the type of compression
/// </summary> /// </summary>
internal class CompressionFactory internal class CompressionFactory
{ {
public ICompression Create(string type) //cache
private static Lazy<ICompression> gzip = new Lazy<ICompression>(() => new GZipCompression());
private static Lazy<ICompression> deflate = new Lazy<ICompression>(() => new DeflateCompression());
public static ICompression GetCompression(string type)
{ {
switch (type) switch (type)
{ {
case "gzip": case "gzip":
return new GZipCompression(); return gzip.Value;
case "deflate": case "deflate":
return new DeflateCompression(); return deflate.Value;
default: default:
return null; return null;
} }
......
...@@ -122,8 +122,7 @@ namespace Titanium.Web.Proxy ...@@ -122,8 +122,7 @@ namespace Titanium.Web.Proxy
/// <returns></returns> /// <returns></returns>
private async Task<byte[]> GetCompressedResponseBody(string encodingType, byte[] responseBodyStream) private async Task<byte[]> GetCompressedResponseBody(string encodingType, byte[] responseBodyStream)
{ {
var compressionFactory = new CompressionFactory(); var compressor = CompressionFactory.GetCompression(encodingType);
var compressor = compressionFactory.Create(encodingType);
return await compressor.Compress(responseBodyStream); return await compressor.Compress(responseBodyStream);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment