OSDN Git Service

add log (#373)
[bytom/vapor.git] / common / compression / compression.go
1 package compression
2
3 import "fmt"
4
5 // Compression is intterface
6 type Compression interface {
7         CompressBytes(data []byte) []byte
8         DecompressBytes(data []byte) ([]byte, error)
9 }
10
11 const (
12         SnappyBackendStr = "snappy" // legacy, defaults to SnappyBackendStr.
13 )
14
15 type compressionCreator func() Compression
16
17 var backends = map[string]compressionCreator{}
18
19 func registerCompressionCreator(backend string, creator compressionCreator, force bool) {
20         _, ok := backends[backend]
21         if !force && ok {
22                 return
23         }
24         backends[backend] = creator
25 }
26
27 func NewCompression(backend string) Compression {
28         compression, ok := backends[backend]
29         if !ok {
30                 panic(fmt.Sprintf("Cannot find compression algorithm:[%s]", backend))
31
32         }
33         return compression()
34 }