Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrorEOF = errors.New("EOF")
ErrorEOF defines an end of file error.
Functions ¶
func MarshalRecord ¶
MarshalRecord encodes a Record as msgpack.
The record, excluding data, is encoded first. Then, event data is encoded. Encoding the event data second allows decoding to parse into a struct if defined.
func New ¶
func New() *msgpackSerializer
New constructs a msgpackSerializer.
Example (DeserializeWithBoundEvent) ¶
package main
import (
"fmt"
"github.com/inklabs/rangedb/provider/msgpackrecordserializer"
"github.com/inklabs/rangedb/rangedbtest"
)
func main() {
// Given
serializer := msgpackrecordserializer.New()
serializer.Bind(rangedbtest.ThingWasDone{})
input := "\x89\xa1a\xa5thing\xa1i\xd9 60f01cc527844cde9953c998a2c077a7\xa1g\xcf\x00\x00\x00\x00\x00\x00\x00d\xa1s\xcf\x00\x00\x00\x00\x00\x00\x00\x02\xa1u\xcf\x00\x00\x00\x00]\xfdwۡe\xa0\xa1t\xacThingWasDone\xa1d\xc0\xa1m\xc0\x82\xa2id\xa1A\xa6number\xd3\x00\x00\x00\x00\x00\x00\x00\x01"
// When
record, _ := serializer.Deserialize([]byte(input))
fmt.Printf("%#v\n", record.Data)
}
Output: &rangedbtest.ThingWasDone{ID:"A", Number:1}
Example (DeserializeWithUnboundEvent) ¶
package main
import (
"fmt"
"github.com/inklabs/rangedb/provider/msgpackrecordserializer"
)
func main() {
// Given
serializer := msgpackrecordserializer.New()
input := "\x89\xa1a\xa5thing\xa1i\xd9 60f01cc527844cde9953c998a2c077a7\xa1g\xcf\x00\x00\x00\x00\x00\x00\x00d\xa1s\xcf\x00\x00\x00\x00\x00\x00\x00\x02\xa1u\xcf\x00\x00\x00\x00]\xfdwۡe\xa0\xa1t\xacThingWasDone\xa1d\xc0\xa1m\xc0\x82\xa2id\xa1A\xa6number\xd3\x00\x00\x00\x00\x00\x00\x00\x01"
// When
record, _ := serializer.Deserialize([]byte(input))
fmt.Printf("%#v\n", record.Data)
}
Output: map[string]interface {}{"id":"A", "number":1}
Example (Serialize) ¶
package main
import (
"fmt"
"github.com/inklabs/rangedb"
"github.com/inklabs/rangedb/provider/msgpackrecordserializer"
"github.com/inklabs/rangedb/rangedbtest"
)
func main() {
// Given
serializer := msgpackrecordserializer.New()
serializer.Bind(rangedbtest.ThingWasDone{})
event := &rangedbtest.ThingWasDone{
ID: "A",
Number: 1,
}
record := &rangedb.Record{
AggregateType: "thing",
AggregateID: "60f01cc527844cde9953c998a2c077a7",
GlobalSequenceNumber: 100,
StreamSequenceNumber: 2,
EventType: "ThingWasDone",
InsertTimestamp: 1576892379,
Data: event,
Metadata: nil,
}
// When
output, _ := serializer.Serialize(record)
fmt.Printf("%q\n", output)
}
Output: "\x89\xa1a\xa5thing\xa1i\xd9 60f01cc527844cde9953c998a2c077a7\xa1g\xcf\x00\x00\x00\x00\x00\x00\x00d\xa1s\xcf\x00\x00\x00\x00\x00\x00\x00\x02\xa1u\xcf\x00\x00\x00\x00]\xfdwۡe\xa0\xa1t\xacThingWasDone\xa1d\xc0\xa1m\xc0\x82\xa2id\xa1A\xa6number\xd3\x00\x00\x00\x00\x00\x00\x00\x01"
func UnmarshalRecord ¶
func UnmarshalRecord(decoder *msgpack.Decoder, getEventType func(eventTypeName string) (reflect.Type, bool)) (*rangedb.Record, error)
UnmarshalRecord decodes a Record using the supplied msgpack decoder.
The record, excluding data, is decoded first. Then, event data is decoded. Event data will be parsed into a struct if supplied by getEventType.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.