Documentation
¶
Index ¶
- Constants
- Variables
- func IsErrNulled(err error) bool
- func IsOutOfBounds(err error) bool
- type Alterer
- type Codec
- type Decoder
- type Encoder
- type Log
- type Query
- type QuerySpec
- func ErrorQuerySpec(err error) QuerySpec
- func Gt(s int64) QuerySpec
- func Gte(s int64) QuerySpec
- func Limit(n int) QuerySpec
- func Live(live bool) QuerySpec
- func Lt(s int64) QuerySpec
- func Lte(s int64) QuerySpec
- func MergeQuerySpec(spec ...QuerySpec) QuerySpec
- func Reverse(yes bool) QuerySpec
- func SeqWrap(wrap bool) QuerySpec
- type SeqWrapper
- type Seqer
Constants ¶
const ( // SeqEmpty is the current sequence number of an empty log SeqEmpty int64 = -1 // SeqErrored is returned if an operation (like Append) fails SeqErrored int64 = -2 SeqSublogDeleted int64 = -255 )
Variables ¶
var ErrNulled = errors.New("margaret: Entry Nulled")
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 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 Log ¶
type Log interface {
// Seq returns the current sequence number, which is also the number of entries in the log
Seqer
// Changes returns an observable that holds the current sequence number
Changes() luigi.Observable
// Get returns the entry with sequence number seq
Get(seq int64) (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{}) (int64, 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 int64) error
// Gte makes the source return only items with sequence numbers >= seq.
Gte(seq int64) error
// Lt makes the source return only items with sequence numbers < seq.
Lt(seq int64) error
// Lte makes the source return only items with sequence numbers <= seq.
Lte(seq int64) 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 {
Seqer
// 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 int64) SeqWrapper
WrapWithSeq wraps the value v to attach a sequence number to it.
Directories
¶
| Path | Synopsis |
|---|---|
|
codec
|
|
|
internal
|
|
|
seqobsv
Package seqobsv wants to supply an observable value sepcialized for sequence numbers in append-only logs.
|
Package seqobsv wants to supply an observable value sepcialized for sequence numbers in append-only logs. |
|
roaring/badger/cmd/mbdump
command
|
|
|
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. |
