mirror of
https://github.com/cloudflare/cloudflared.git
synced 2025-07-28 12:39:58 +00:00
Add db-connect, a SQL over HTTPS server
This commit is contained in:
55
vendor/github.com/cloudflare/golz4/lz4.go
generated
vendored
Normal file
55
vendor/github.com/cloudflare/golz4/lz4.go
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
package lz4
|
||||
|
||||
// #cgo CFLAGS: -O3
|
||||
// #include "src/lz4.h"
|
||||
// #include "src/lz4.c"
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// p gets a char pointer to the first byte of a []byte slice
|
||||
func p(in []byte) *C.char {
|
||||
if len(in) == 0 {
|
||||
return (*C.char)(unsafe.Pointer(nil))
|
||||
}
|
||||
return (*C.char)(unsafe.Pointer(&in[0]))
|
||||
}
|
||||
|
||||
// clen gets the length of a []byte slice as a char *
|
||||
func clen(s []byte) C.int {
|
||||
return C.int(len(s))
|
||||
}
|
||||
|
||||
// Uncompress with a known output size. len(out) should be equal to
|
||||
// the length of the uncompressed out.
|
||||
func Uncompress(in, out []byte) (error) {
|
||||
if int(C.LZ4_decompress_safe(p(in), p(out), clen(in), clen(out))) < 0 {
|
||||
return errors.New("Malformed compression stream")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// CompressBound calculates the size of the output buffer needed by
|
||||
// Compress. This is based on the following macro:
|
||||
//
|
||||
// #define LZ4_COMPRESSBOUND(isize)
|
||||
// ((unsigned int)(isize) > (unsigned int)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16)
|
||||
func CompressBound(in []byte) int {
|
||||
return len(in) + ((len(in) / 255) + 16)
|
||||
}
|
||||
|
||||
// Compress compresses in and puts the content in out. len(out)
|
||||
// should have enough space for the compressed data (use CompressBound
|
||||
// to calculate). Returns the number of bytes in the out slice.
|
||||
func Compress(in, out []byte) (outSize int, err error) {
|
||||
outSize = int(C.LZ4_compress_limitedOutput(p(in), p(out), clen(in), clen(out)))
|
||||
if outSize == 0 {
|
||||
err = fmt.Errorf("insufficient space for compression")
|
||||
}
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user