// Licensed to the Apache Software Foundation (ASF) under one// or more contributor license agreements. See the NOTICE file// distributed with this work for additional information// regarding copyright ownership. The ASF licenses this file// to you under the Apache License, Version 2.0 (the// "License"); you may not use this file except in compliance// with the License. You may obtain a copy of the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.package compressimport ()// lz4.Compressor is not goroutine-safe, so we use a pool to amortize the cost// of allocating a new one for each call to Encode().var compressorPool = sync.Pool{New: func() interface{} { returnnew(lz4.Compressor) }}func compressBlock(, []byte) (int, error) { := compressorPool.Get().(*lz4.Compressor)defercompressorPool.Put()return .CompressBlock(, )}type lz4RawCodec struct{}func ( lz4RawCodec) (, []byte) []byte { , := compressBlock(, [:cap()])if != nil {panic() }return [:]}func ( lz4RawCodec) (, []byte, int) []byte {// the lz4 block implementation does not allow level to be setreturn .Encode(, )}func (lz4RawCodec) (, []byte) []byte { , := lz4.UncompressBlock(, )if != nil {panic() }return [:]}func ( lz4RawCodec) ( int64) int64 {returnint64(lz4.CompressBlockBound(int()))}func init() {RegisterCodec(Codecs.Lz4Raw, lz4RawCodec{})}
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.