encoding

package
v0.0.0-...-4b82dee Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2015 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Decode

func Decode(k []byte, wrappedValue []byte) (interface{}, error)

Decode decodes a Go datatype from a value stored in the key-value store. It returns either an error or a variable of the decoded value. TODO(petermattis) remove this: the only use is in storage/engine.go:Increment.

func DecodeBytes

func DecodeBytes(b []byte, r []byte) ([]byte, []byte)

DecodeBytes decodes a []byte value from the input buffer which was encoded using EncodeBytes. The decoded bytes are appended to r. The remainder of the input buffer and the decoded []byte are returned.

func DecodeBytesDecreasing

func DecodeBytesDecreasing(b []byte, r []byte) ([]byte, []byte)

DecodeBytesDecreasing decodes a []byte value from the input buffer which was encoded using EncodeBytesDecreasing. The decoded bytes are appended to r. The remainder of the input buffer and the decoded []byte are returned.

func DecodeFloat

func DecodeFloat(buf []byte, tmp []byte) ([]byte, float64)

DecodeFloat returns the remaining byte slice after decoding and the decoded float64 from buf.

func DecodeIfNull

func DecodeIfNull(b []byte) ([]byte, bool)

DecodeIfNull decodes a NULL value from the input buffer. If the input buffer contains a null at the start of the buffer then it is removed from the buffer and true is returned for the second result. Otherwise, the buffer is returned unchanged and false is returned for the second result. Since the NULL value encoding is guaranteed to never occur as the prefix for the EncodeVarint, EncodeFloat, EncodeBytes and EncodeString encodings, it is safe to call DecodeIfNull on their encoded values.

func DecodeString

func DecodeString(b []byte, r []byte) ([]byte, string)

DecodeString decodes a string value from the input buffer which was encoded using EncodeString or EncodeBytes. The r []byte is used as a temporary buffer in order to avoid memory allocations. The remainder of the input buffer and the decoded string are returned.

func DecodeStringDecreasing

func DecodeStringDecreasing(b []byte, r []byte) ([]byte, string)

DecodeStringDecreasing decodes a string value from the input buffer which was encoded using EncodeStringDecreasing or EncodeBytesDecreasing. The r []byte is used as a temporary buffer in order to avoid memory allocations. The remainder of the input buffer and the decoded string are returned.

func DecodeTime

func DecodeTime(b []byte) ([]byte, time.Time)

DecodeTime converts an encoded time into a UTC time.Time type and returns the rest of the buffer.

func DecodeUint32

func DecodeUint32(b []byte) ([]byte, uint32)

DecodeUint32 decodes a uint32 from the input buffer, treating the input as a big-endian 8 byte uint32 representation. The remainder of the input buffer and the decoded uint32 are returned.

func DecodeUint32Decreasing

func DecodeUint32Decreasing(b []byte) ([]byte, uint32)

DecodeUint32Decreasing decodes a uint32 value which was encoded using EncodeUint32Decreasing.

func DecodeUint64

func DecodeUint64(b []byte) ([]byte, uint64)

DecodeUint64 decodes a uint64 from the input buffer, treating the input as a big-endian 8 byte uint64 representation. The remainder of the input buffer and the decoded uint64 are returned.

func DecodeUint64Decreasing

func DecodeUint64Decreasing(b []byte) ([]byte, uint64)

DecodeUint64Decreasing decodes a uint64 value which was encoded using EncodeUint64Decreasing.

func DecodeUvarint

func DecodeUvarint(b []byte) ([]byte, uint64)

DecodeUvarint decodes a varint encoded uint64 from the input buffer. The remainder of the input buffer and the decoded uint64 are returned.

func DecodeUvarintDecreasing

func DecodeUvarintDecreasing(b []byte) ([]byte, uint64)

DecodeUvarintDecreasing decodes a uint64 value which was encoded using EncodeUvarintDecreasing.

func DecodeVarint

func DecodeVarint(b []byte) ([]byte, int64)

DecodeVarint decodes a varint encoded int64 from the input buffer. The remainder of the input buffer and the decoded int64 are returned.

func DecodeVarintDecreasing

func DecodeVarintDecreasing(b []byte) ([]byte, int64)

DecodeVarintDecreasing decodes a uint64 value which was encoded using EncodeVarintDecreasing.

func Encode

func Encode(k []byte, v interface{}) ([]byte, error)

Encode translates the given value into a byte representation used to store it in the underlying key-value store. It typically applies to user-level keys, but not to keys operated on internally, such as zone keys. It returns a byte slice containing, in order, the internal representation of v and a checksum of (k+v). TODO(petermattis) remove this: the only use is in storage/engine.go:Increment.

func EncodeBytes

func EncodeBytes(b []byte, data []byte) []byte

EncodeBytes encodes the []byte value using an escape-based encoding. The encoded value is terminated with the sequence "\x00\x01" which is guaranteed to not occur elsewhere in the encoded value. The encoded bytes are append to the supplied buffer and the resulting buffer is returned.

func EncodeBytesDecreasing

func EncodeBytesDecreasing(b []byte, data []byte) []byte

EncodeBytesDecreasing encodes the []byte value using an escape-based encoding and then inverts (ones complement) the result so that it sorts in reverse order, from larger to smaller lexicographically.

func EncodeFloat

func EncodeFloat(b []byte, f float64) []byte

EncodeFloat returns the resulting byte slice with the encoded float64 appended to b.

Values are classified as large, medium, or small according to the value of E. If E is 11 or more, the value is large. For E between 0 and 10, the value is medium. For E less than zero, the value is small.

Large positive values are encoded as a single byte 0x22 followed by E as a varint and then M. Medium positive values are a single byte of 0x17+E followed by M. Small positive values are encoded as a single byte 0x16 followed by the ones-complement of the varint for -E followed by M.

Small negative values are encoded as a single byte 0x14 followed by -E as a varint and then the ones-complement of M. Medium negative values are encoded as a byte 0x13-E followed by the ones-complement of M. Large negative values consist of the single byte 0x08 followed by the ones-complement of the varint encoding of E followed by the ones-complement of M.

func EncodeNull

func EncodeNull(b []byte) []byte

EncodeNull encodes a NULL value. The encodes bytes are appended to the supplied buffer and the final buffer is returned. The encoded value for a NULL is guaranteed to not be a prefix for the EncodeVarint, EncodeFloat, EncodeBytes and EncodeString encodings.

func EncodeString

func EncodeString(b []byte, s string) []byte

EncodeString encodes the string value using an escape-based encoding. See EncodeBytes for details. The encoded bytes are append to the supplied buffer and the resulting buffer is returned.

func EncodeStringDecreasing

func EncodeStringDecreasing(b []byte, s string) []byte

EncodeStringDecreasing encodes the string value using an escape-based encoding. See EncodeBytesDecreasing for details. The encoded bytes are append to the supplied buffer and the resulting buffer is returned.

func EncodeTime

func EncodeTime(b []byte, t time.Time) []byte

EncodeTime encodes a time value, appends it to the supplied buffer, and returns the final buffer. The encoding is guaranteed to be ordered Such that if t1.Before(t2) then after EncodeTime(b1, t1), and EncodeTime(b2, t1), Compare(b1, b2) < 0. The time zone offset not included in the encoding.

func EncodeUint32

func EncodeUint32(b []byte, v uint32) []byte

EncodeUint32 encodes the uint32 value using a big-endian 8 byte representation. The bytes are appended to the supplied buffer and the final buffer is returned.

func EncodeUint32Decreasing

func EncodeUint32Decreasing(b []byte, v uint32) []byte

EncodeUint32Decreasing encodes the uint32 value so that it sorts in reverse order, from largest to smallest.

func EncodeUint64

func EncodeUint64(b []byte, v uint64) []byte

EncodeUint64 encodes the uint64 value using a big-endian 8 byte representation. The bytes are appended to the supplied buffer and the final buffer is returned.

func EncodeUint64Decreasing

func EncodeUint64Decreasing(b []byte, v uint64) []byte

EncodeUint64Decreasing encodes the uint64 value so that it sorts in reverse order, from largest to smallest.

func EncodeUvarint

func EncodeUvarint(b []byte, v uint64) []byte

EncodeUvarint encodes the uint64 value using a variable length (length-prefixed) representation. The length is encoded as a single byte indicating the number of encoded bytes (-8) to follow. See EncodeVarint for rationale. The encoded bytes are appended to the supplied buffer and the final buffer is returned.

func EncodeUvarintDecreasing

func EncodeUvarintDecreasing(b []byte, v uint64) []byte

EncodeUvarintDecreasing encodes the uint64 value so that it sorts in reverse order, from largest to smallest.

func EncodeVarint

func EncodeVarint(b []byte, v int64) []byte

EncodeVarint encodes the int64 value using a variable length (length-prefixed) representation. The length is encoded as a single byte. If the value to be encoded is negative the length is encoded as 8-numBytes. If the value is positive it is encoded as 8+numBytes. The encoded bytes are appended to the supplied buffer and the final buffer is returned.

func EncodeVarintDecreasing

func EncodeVarintDecreasing(b []byte, v int64) []byte

EncodeVarintDecreasing encodes the uint64 value so that it sorts in reverse order, from largest to smallest.

func NewCRC32Checksum

func NewCRC32Checksum(b []byte) hash.Hash32

NewCRC32Checksum returns a CRC32 checksum computed from the input byte slice.

func ReleaseCRC32Checksum

func ReleaseCRC32Checksum(crc hash.Hash32)

ReleaseCRC32Checksum releases a CRC32 back to the allocation pool.

func WillOverflow

func WillOverflow(a, b int64) bool

WillOverflow returns true if and only if adding both inputs would under- or overflow the 64 bit integer range.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL