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
- Variables
- func CodecString(codec byte) string
- func IsRegisteredCodec(codec byte) bool
- func Str2Codec(str string) (byte, error)
- type CodecFactory
- type DeltaCodecFactory
- func (f *DeltaCodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)
- func (f *DeltaCodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)
- func (f *DeltaCodecFactory) NewIntValueDecoder() (ValueDecoder, error)
- func (f *DeltaCodecFactory) NewIntValueEncoder() (ValueEncoder, error)
- func (f *DeltaCodecFactory) NewTimeDecoder() (TimeDecoder, error)
- func (f *DeltaCodecFactory) NewTimeEncoder() (TimeEncoder, error)
- type DeltaDecoder
- type DeltaEncoder
- type DeltaRLECodecFactory
- func (f *DeltaRLECodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)
- func (f *DeltaRLECodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)
- func (f *DeltaRLECodecFactory) NewIntValueDecoder() (ValueDecoder, error)
- func (f *DeltaRLECodecFactory) NewIntValueEncoder() (ValueEncoder, error)
- func (f *DeltaRLECodecFactory) NewTimeDecoder() (TimeDecoder, error)
- func (f *DeltaRLECodecFactory) NewTimeEncoder() (TimeEncoder, error)
- type DeltaRLEDecoder
- type DeltaRLEEncoder
- type RLECodecFactory
- func (f *RLECodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)
- func (f *RLECodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)
- func (f *RLECodecFactory) NewIntValueDecoder() (ValueDecoder, error)
- func (f *RLECodecFactory) NewIntValueEncoder() (ValueEncoder, error)
- func (f *RLECodecFactory) NewTimeDecoder() (TimeDecoder, error)
- func (f *RLECodecFactory) NewTimeEncoder() (TimeEncoder, error)
- type RLEDecoder
- type RLEEncoder
- type RawBinaryCodecFactory
- func (f *RawBinaryCodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)
- func (f *RawBinaryCodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)
- func (f *RawBinaryCodecFactory) NewIntValueDecoder() (ValueDecoder, error)
- func (f *RawBinaryCodecFactory) NewIntValueEncoder() (ValueEncoder, error)
- func (f *RawBinaryCodecFactory) NewTimeDecoder() (TimeDecoder, error)
- func (f *RawBinaryCodecFactory) NewTimeEncoder() (TimeEncoder, error)
- type RawBinaryDecoder
- type RawBinaryEncoder
- type TimeDecoder
- type TimeEncoder
- type ValueDecoder
- type ValueEncoder
- type VarIntCodecFactory
- func (f *VarIntCodecFactory) NewDoubleValueDecoder() (ValueDecoder, error)
- func (f *VarIntCodecFactory) NewDoubleValueEncoder() (ValueEncoder, error)
- func (f *VarIntCodecFactory) NewIntValueDecoder() (ValueDecoder, error)
- func (f *VarIntCodecFactory) NewIntValueEncoder() (ValueEncoder, error)
- func (f *VarIntCodecFactory) NewTimeDecoder() (TimeDecoder, error)
- func (f *VarIntCodecFactory) NewTimeEncoder() (TimeEncoder, error)
- type VarIntDecoder
- type VarIntEncoder
Constants ¶
const ( CodecRawBigEndian byte CodecRawLittleEndian CodecVarInt CodecRLE CodecDelta CodecDeltaRLE )
Variables ¶
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 ¶
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 TimeEncoder ¶
type ValueDecoder ¶
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