Documentation ¶
Index ¶
- Variables
- func IsErrNulled(err error) bool
- func IsOutOfBounds(err error) bool
- type Alterer
- type BaseSeq
- type Codec
- type Decoder
- type Encoder
- type Framing
- type Log
- type Query
- type QuerySpec
- func ErrorQuerySpec(err error) QuerySpec
- func Gt(s Seq) QuerySpec
- func Gte(s Seq) QuerySpec
- func Limit(n int) QuerySpec
- func Live(live bool) QuerySpec
- func Lt(s Seq) QuerySpec
- func Lte(s Seq) QuerySpec
- func MergeQuerySpec(spec ...QuerySpec) QuerySpec
- func Reverse(yes bool) QuerySpec
- func SeqWrap(wrap bool) QuerySpec
- type Seq
- type SeqWrapper
Constants ¶
This section is empty.
Variables ¶
var ErrNulled errNulled
var OOB oob
OOB is an out of bounds error
Functions ¶
func IsErrNulled ¶
func IsOutOfBounds ¶
IsOutOfBounds returns whether a particular error is an out-of-bounds error
Types ¶
type BaseSeq ¶
type BaseSeq int64
BaseSeq is the sequence number of an item in the log TODO currently this BaseSeq and the one in multilog somewhat do the same but not really. Find a way to unify them.
const ( // SeqEmpty is the current sequence number of an empty log SeqEmpty BaseSeq = -1 )
type Codec ¶
type Codec interface { // Marshal encodes a single value and returns the serialized byte slice. Marshal(value interface{}) ([]byte, error) // Unmarshal decodes and returns the value stored in data. Unmarshal(data []byte) (interface{}, error) NewDecoder(io.Reader) Decoder NewEncoder(io.Writer) Encoder }
Codec marshals and unmarshals values and creates encoders and decoders
type Framing ¶
type Framing interface { DecodeFrame([]byte) ([]byte, error) EncodeFrame([]byte) ([]byte, error) FrameSize() int64 }
Framing encodes and decodes byte slices into a framing so the frames can be stored sequentially
type Log ¶
type Log interface { // Seq returns an observable that holds the current sequence number Seq() luigi.Observable // Get returns the entry with sequence number seq Get(seq Seq) (interface{}, error) // Query returns a stream that is constrained by the passed query specification Query(...QuerySpec) (luigi.Source, error) // Append appends a new entry to the log Append(interface{}) (Seq, error) }
Log stores entries sequentially, which can be queried individually using Get or as streams using Query.
type Query ¶
type Query interface { // Gt makes the source return only items with sequence numbers > seq. Gt(seq Seq) error // Gte makes the source return only items with sequence numbers >= seq. Gte(seq Seq) error // Lt makes the source return only items with sequence numbers < seq. Lt(seq Seq) error // Lte makes the source return only items with sequence numbers <= seq. Lte(seq Seq) error // Limit makes the source return only up to n items. Limit(n int) error // Reverse makes the source return the lastest values first Reverse(yes bool) error // Live makes the source block at the end of the log and wait for new values // that are being appended. Live(bool) error // SeqWrap makes the source return values that contain both the item and its // sequence number, instead of the item alone. SeqWrap(bool) error }
Query is the interface implemented by the concrete log implementations that collects the constraints of the query.
type QuerySpec ¶
QuerySpec is a constraint on the query.
func ErrorQuerySpec ¶
ErrorQuerySpec makes the log.Query call return the passed error.
func Live ¶
Live makes the source block at the end of the log and wait for new values that are being appended.
func MergeQuerySpec ¶
MergeQuerySpec collects several contraints and merges them into one.
type SeqWrapper ¶
type SeqWrapper interface { // Seq returns the sequence number of the item. Seq() Seq // Value returns the item itself. Value() interface{} }
SeqWrapper wraps a value to attach a sequence number to it.
func WrapWithSeq ¶
func WrapWithSeq(v interface{}, seq Seq) SeqWrapper
WrapWithSeq wraps the value v to attach a sequence number to it.
Directories ¶
Path | Synopsis |
---|---|
codec
|
|
framing
|
|
internal
|
|
Code generated by counterfeiter.
|
Code generated by counterfeiter. |
Package offset2 implements a margaret log as persisted sequence of data across multiple files.
|
Package offset2 implements a margaret log as persisted sequence of data across multiple files. |