encoding

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Jan 7, 2020 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package encoding is used for compress/decompress time series data to/from raw bytes Tracker: https://github.com/xephonhq/xephon-k/issues/47

Index

Constants

View Source
const (
	CodecRawBigEndian byte
	CodecRawLittleEndian
	CodecVarInt
	CodecRLE
	CodecDelta
	CodecDeltaRLE
)

Variables

View Source
var (
	ErrTooSmall              = errors.New("data for decoding is too small")
	ErrCodecMismatch         = errors.New("decoder got data encoded using other codec")
	ErrValueTypeNotSupported = errors.New("codec does not support this type of value")
	ErrCodecNotFound         = errors.New("codec not found, did you forget to register it?")
)

Functions

func CodecString

func CodecString(codec byte) string

func IsRegisteredCodec

func IsRegisteredCodec(codec byte) bool

func Str2Codec added in v0.1.0

func Str2Codec(str string) (byte, error)

TODO: only CodecString is tested, Str2Codec is not tested

Types

type CodecFactory

type CodecFactory interface {
	NewTimeEncoder() (TimeEncoder, error)
	NewTimeDecoder() (TimeDecoder, error)
	NewIntValueEncoder() (ValueEncoder, error)
	NewIntValueDecoder() (ValueDecoder, error)
	NewDoubleValueEncoder() (ValueEncoder, error)
	NewDoubleValueDecoder() (ValueDecoder, error)
}

func GetFactory

func GetFactory(codec byte) (CodecFactory, error)

type DeltaCodecFactory added in v0.1.0

type DeltaCodecFactory struct {
}

func (*DeltaCodecFactory) NewDoubleValueDecoder added in v0.1.0

func (f *DeltaCodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)

func (*DeltaCodecFactory) NewDoubleValueEncoder added in v0.1.0

func (f *DeltaCodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)

func (*DeltaCodecFactory) NewIntValueDecoder added in v0.1.0

func (f *DeltaCodecFactory) NewIntValueDecoder() (ValueDecoder, error)

func (*DeltaCodecFactory) NewIntValueEncoder added in v0.1.0

func (f *DeltaCodecFactory) NewIntValueEncoder() (ValueEncoder, error)

func (*DeltaCodecFactory) NewTimeDecoder added in v0.1.0

func (f *DeltaCodecFactory) NewTimeDecoder() (TimeDecoder, error)

func (*DeltaCodecFactory) NewTimeEncoder added in v0.1.0

func (f *DeltaCodecFactory) NewTimeEncoder() (TimeEncoder, error)

type DeltaDecoder added in v0.1.0

type DeltaDecoder struct {
	// contains filtered or unexported fields
}

func NewDeltaDecoder added in v0.1.0

func NewDeltaDecoder() *DeltaDecoder

func (*DeltaDecoder) Init added in v0.1.0

func (d *DeltaDecoder) Init(b []byte) error

func (*DeltaDecoder) Next added in v0.1.0

func (d *DeltaDecoder) Next() bool

func (*DeltaDecoder) ReadDouble added in v0.1.0

func (d *DeltaDecoder) ReadDouble() float64

func (*DeltaDecoder) ReadInt added in v0.1.0

func (d *DeltaDecoder) ReadInt() int64

func (*DeltaDecoder) ReadTime added in v0.1.0

func (d *DeltaDecoder) ReadTime() int64

type DeltaEncoder added in v0.1.0

type DeltaEncoder struct {
	// contains filtered or unexported fields
}

func NewDeltaEncoder added in v0.1.0

func NewDeltaEncoder() *DeltaEncoder

func (*DeltaEncoder) Bytes added in v0.1.0

func (e *DeltaEncoder) Bytes() ([]byte, error)

func (*DeltaEncoder) Codec added in v0.1.0

func (e *DeltaEncoder) Codec() byte

func (*DeltaEncoder) Reset added in v0.1.0

func (e *DeltaEncoder) Reset()

func (*DeltaEncoder) WriteDouble added in v0.1.0

func (e *DeltaEncoder) WriteDouble(v float64)

func (*DeltaEncoder) WriteInt added in v0.1.0

func (e *DeltaEncoder) WriteInt(v int64)

func (*DeltaEncoder) WriteTime added in v0.1.0

func (e *DeltaEncoder) WriteTime(t int64)

type DeltaRLECodecFactory added in v0.1.0

type DeltaRLECodecFactory struct {
}

func (*DeltaRLECodecFactory) NewDoubleValueDecoder added in v0.1.0

func (f *DeltaRLECodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)

func (*DeltaRLECodecFactory) NewDoubleValueEncoder added in v0.1.0

func (f *DeltaRLECodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)

func (*DeltaRLECodecFactory) NewIntValueDecoder added in v0.1.0

func (f *DeltaRLECodecFactory) NewIntValueDecoder() (ValueDecoder, error)

func (*DeltaRLECodecFactory) NewIntValueEncoder added in v0.1.0

func (f *DeltaRLECodecFactory) NewIntValueEncoder() (ValueEncoder, error)

func (*DeltaRLECodecFactory) NewTimeDecoder added in v0.1.0

func (f *DeltaRLECodecFactory) NewTimeDecoder() (TimeDecoder, error)

func (*DeltaRLECodecFactory) NewTimeEncoder added in v0.1.0

func (f *DeltaRLECodecFactory) NewTimeEncoder() (TimeEncoder, error)

type DeltaRLEDecoder added in v0.1.0

type DeltaRLEDecoder struct {
	// contains filtered or unexported fields
}

func NewDeltaRLEDecoder added in v0.1.0

func NewDeltaRLEDecoder() *DeltaRLEDecoder

func (*DeltaRLEDecoder) Init added in v0.1.0

func (d *DeltaRLEDecoder) Init(b []byte) error

func (*DeltaRLEDecoder) Next added in v0.1.0

func (d *DeltaRLEDecoder) Next() bool

func (*DeltaRLEDecoder) ReadDouble added in v0.1.0

func (d *DeltaRLEDecoder) ReadDouble() float64

func (*DeltaRLEDecoder) ReadInt added in v0.1.0

func (d *DeltaRLEDecoder) ReadInt() int64

func (*DeltaRLEDecoder) ReadTime added in v0.1.0

func (d *DeltaRLEDecoder) ReadTime() int64

type DeltaRLEEncoder added in v0.1.0

type DeltaRLEEncoder struct {
	// contains filtered or unexported fields
}

func NewDeltaRLEEncoder added in v0.1.0

func NewDeltaRLEEncoder() *DeltaRLEEncoder

func (*DeltaRLEEncoder) Bytes added in v0.1.0

func (e *DeltaRLEEncoder) Bytes() ([]byte, error)

func (*DeltaRLEEncoder) Codec added in v0.1.0

func (e *DeltaRLEEncoder) Codec() byte

func (*DeltaRLEEncoder) Reset added in v0.1.0

func (e *DeltaRLEEncoder) Reset()

func (*DeltaRLEEncoder) WriteDouble added in v0.1.0

func (e *DeltaRLEEncoder) WriteDouble(v float64)

func (*DeltaRLEEncoder) WriteInt added in v0.1.0

func (e *DeltaRLEEncoder) WriteInt(v int64)

TODO: merge WriteTime with WriteInt, this copy and paste in all the encoding code is really xx

func (*DeltaRLEEncoder) WriteTime added in v0.1.0

func (e *DeltaRLEEncoder) WriteTime(t int64)

type RLECodecFactory

type RLECodecFactory struct {
}

Run length encoding without delta, value and length use variable length int encoding

func (*RLECodecFactory) NewDoubleValueDecoder

func (f *RLECodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)

func (*RLECodecFactory) NewDoubleValueEncoder

func (f *RLECodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)

func (*RLECodecFactory) NewIntValueDecoder

func (f *RLECodecFactory) NewIntValueDecoder() (ValueDecoder, error)

func (*RLECodecFactory) NewIntValueEncoder

func (f *RLECodecFactory) NewIntValueEncoder() (ValueEncoder, error)

func (*RLECodecFactory) NewTimeDecoder

func (f *RLECodecFactory) NewTimeDecoder() (TimeDecoder, error)

func (*RLECodecFactory) NewTimeEncoder

func (f *RLECodecFactory) NewTimeEncoder() (TimeEncoder, error)

type RLEDecoder

type RLEDecoder struct {
	// contains filtered or unexported fields
}

func NewRLEDecoder

func NewRLEDecoder() *RLEDecoder

func (*RLEDecoder) Init

func (d *RLEDecoder) Init(b []byte) error

func (*RLEDecoder) Next

func (d *RLEDecoder) Next() bool

func (*RLEDecoder) ReadDouble

func (d *RLEDecoder) ReadDouble() float64

func (*RLEDecoder) ReadInt

func (d *RLEDecoder) ReadInt() int64

func (*RLEDecoder) ReadTime

func (d *RLEDecoder) ReadTime() int64

type RLEEncoder

type RLEEncoder struct {
	// contains filtered or unexported fields
}

func NewRLEEncoder

func NewRLEEncoder() *RLEEncoder

func (*RLEEncoder) Bytes

func (e *RLEEncoder) Bytes() ([]byte, error)

func (*RLEEncoder) Codec

func (e *RLEEncoder) Codec() byte

func (*RLEEncoder) Reset

func (e *RLEEncoder) Reset()

func (*RLEEncoder) WriteDouble

func (e *RLEEncoder) WriteDouble(v float64)

func (*RLEEncoder) WriteInt

func (e *RLEEncoder) WriteInt(v int64)

func (*RLEEncoder) WriteTime

func (e *RLEEncoder) WriteTime(t int64)

type RawBinaryCodecFactory

type RawBinaryCodecFactory struct {
	// contains filtered or unexported fields
}

Non compression binary encoding using little/big endian

func (*RawBinaryCodecFactory) NewDoubleValueDecoder

func (f *RawBinaryCodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)

func (*RawBinaryCodecFactory) NewDoubleValueEncoder

func (f *RawBinaryCodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)

func (*RawBinaryCodecFactory) NewIntValueDecoder

func (f *RawBinaryCodecFactory) NewIntValueDecoder() (ValueDecoder, error)

func (*RawBinaryCodecFactory) NewIntValueEncoder

func (f *RawBinaryCodecFactory) NewIntValueEncoder() (ValueEncoder, error)

func (*RawBinaryCodecFactory) NewTimeDecoder

func (f *RawBinaryCodecFactory) NewTimeDecoder() (TimeDecoder, error)

func (*RawBinaryCodecFactory) NewTimeEncoder

func (f *RawBinaryCodecFactory) NewTimeEncoder() (TimeEncoder, error)

type RawBinaryDecoder

type RawBinaryDecoder struct {
	// contains filtered or unexported fields
}

func NewRawBinaryDecoder

func NewRawBinaryDecoder() *RawBinaryDecoder

TODO: might split it into two functions, little and big endian then the problem is do we still pass the codec byte to Init and set the endian

func (*RawBinaryDecoder) Init

func (d *RawBinaryDecoder) Init(b []byte) error

func (*RawBinaryDecoder) Next

func (d *RawBinaryDecoder) Next() bool

func (*RawBinaryDecoder) ReadDouble

func (d *RawBinaryDecoder) ReadDouble() float64

func (*RawBinaryDecoder) ReadInt

func (d *RawBinaryDecoder) ReadInt() int64

func (*RawBinaryDecoder) ReadTime

func (d *RawBinaryDecoder) ReadTime() int64

type RawBinaryEncoder

type RawBinaryEncoder struct {
	// contains filtered or unexported fields
}

func NewBigEndianBinaryEncoder

func NewBigEndianBinaryEncoder() *RawBinaryEncoder

func NewLittleEndianBinaryEncoder

func NewLittleEndianBinaryEncoder() *RawBinaryEncoder

func (*RawBinaryEncoder) Bytes

func (e *RawBinaryEncoder) Bytes() ([]byte, error)

func (*RawBinaryEncoder) Codec

func (e *RawBinaryEncoder) Codec() byte

func (*RawBinaryEncoder) Reset

func (e *RawBinaryEncoder) Reset()

func (*RawBinaryEncoder) WriteDouble

func (e *RawBinaryEncoder) WriteDouble(v float64)

func (*RawBinaryEncoder) WriteInt

func (e *RawBinaryEncoder) WriteInt(v int64)

func (*RawBinaryEncoder) WriteTime

func (e *RawBinaryEncoder) WriteTime(t int64)

type TimeDecoder

type TimeDecoder interface {
	Init([]byte) error
	Next() bool
	ReadTime() int64
}

type TimeEncoder

type TimeEncoder interface {
	Codec() byte
	Bytes() ([]byte, error)
	Reset()
	WriteTime(t int64)
}

type ValueDecoder

type ValueDecoder interface {
	Init([]byte) error
	Next() bool
	ReadInt() int64
	ReadDouble() float64
}

type ValueEncoder

type ValueEncoder interface {
	Codec() byte
	Bytes() ([]byte, error)
	Reset()
	WriteInt(v int64)
	WriteDouble(v float64)
}

TODO: add SupportInt/Double/String, so we can skip some of them in test, and check if it match series type when we enforce encoding in config

type VarIntCodecFactory

type VarIntCodecFactory struct {
}

NOTE: it is compatible with leb128

func (*VarIntCodecFactory) NewDoubleValueDecoder

func (f *VarIntCodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)

func (*VarIntCodecFactory) NewDoubleValueEncoder

func (f *VarIntCodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)

func (*VarIntCodecFactory) NewIntValueDecoder

func (f *VarIntCodecFactory) NewIntValueDecoder() (ValueDecoder, error)

func (*VarIntCodecFactory) NewIntValueEncoder

func (f *VarIntCodecFactory) NewIntValueEncoder() (ValueEncoder, error)

func (*VarIntCodecFactory) NewTimeDecoder

func (f *VarIntCodecFactory) NewTimeDecoder() (TimeDecoder, error)

func (*VarIntCodecFactory) NewTimeEncoder

func (f *VarIntCodecFactory) NewTimeEncoder() (TimeEncoder, error)

type VarIntDecoder

type VarIntDecoder struct {
	// contains filtered or unexported fields
}

func NewVarIntDecoder

func NewVarIntDecoder() *VarIntDecoder

func (*VarIntDecoder) Init

func (d *VarIntDecoder) Init(b []byte) error

func (*VarIntDecoder) Next

func (d *VarIntDecoder) Next() bool

func (*VarIntDecoder) ReadDouble

func (d *VarIntDecoder) ReadDouble() float64

func (*VarIntDecoder) ReadInt

func (d *VarIntDecoder) ReadInt() int64

func (*VarIntDecoder) ReadTime

func (d *VarIntDecoder) ReadTime() int64

type VarIntEncoder

type VarIntEncoder struct {
	// contains filtered or unexported fields
}

func NewVarIntEncoder

func NewVarIntEncoder() *VarIntEncoder

func (*VarIntEncoder) Bytes

func (e *VarIntEncoder) Bytes() ([]byte, error)

func (*VarIntEncoder) Codec

func (e *VarIntEncoder) Codec() byte

func (*VarIntEncoder) Reset

func (e *VarIntEncoder) Reset()

func (*VarIntEncoder) WriteDouble

func (e *VarIntEncoder) WriteDouble(v float64)

func (*VarIntEncoder) WriteInt

func (e *VarIntEncoder) WriteInt(v int64)

func (*VarIntEncoder) WriteTime

func (e *VarIntEncoder) WriteTime(t int64)

Source Files

  • delta.go
  • delta_rle.go
  • doc.go
  • pkg.go
  • raw.go
  • rle.go
  • varint.go

Jump to

Keyboard shortcuts

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