3 // Copyright 2015 Ernest Micklei. All rights reserved.
4 // Use of this source code is governed by a license
5 // that can be found in the LICENSE file.
12 // CompressorProvider describes a component that can provider compressors for the std methods.
13 type CompressorProvider interface {
14 // Returns a *gzip.Writer which needs to be released later.
15 // Before using it, call Reset().
16 AcquireGzipWriter() *gzip.Writer
18 // Releases an acquired *gzip.Writer.
19 ReleaseGzipWriter(w *gzip.Writer)
21 // Returns a *gzip.Reader which needs to be released later.
22 AcquireGzipReader() *gzip.Reader
24 // Releases an acquired *gzip.Reader.
25 ReleaseGzipReader(w *gzip.Reader)
27 // Returns a *zlib.Writer which needs to be released later.
28 // Before using it, call Reset().
29 AcquireZlibWriter() *zlib.Writer
31 // Releases an acquired *zlib.Writer.
32 ReleaseZlibWriter(w *zlib.Writer)
35 // DefaultCompressorProvider is the actual provider of compressors (zlib or gzip).
36 var currentCompressorProvider CompressorProvider
39 currentCompressorProvider = NewSyncPoolCompessors()
42 // CurrentCompressorProvider returns the current CompressorProvider.
43 // It is initialized using a SyncPoolCompessors.
44 func CurrentCompressorProvider() CompressorProvider {
45 return currentCompressorProvider
48 // SetCompressorProvider sets the actual provider of compressors (zlib or gzip).
49 func SetCompressorProvider(p CompressorProvider) {
51 panic("cannot set compressor provider to nil")
53 currentCompressorProvider = p