wp
This commit is contained in:
340
txlog/txlog.go
340
txlog/txlog.go
@@ -5,9 +5,7 @@ import (
|
||||
|
||||
bin "gordenko.dev/dima/bin/little"
|
||||
"gordenko.dev/dima/qb"
|
||||
"gordenko.dev/dima/qb/atree"
|
||||
"gordenko.dev/dima/qb/conbuf"
|
||||
"gordenko.dev/dima/qb/proto"
|
||||
)
|
||||
|
||||
type AddedMetric struct {
|
||||
@@ -77,93 +75,93 @@ func (s *DeletedMetric) Parse(src io.Reader) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
type AppendedMeasure struct {
|
||||
MetricID uint32
|
||||
Timestamp uint32
|
||||
Value float64
|
||||
}
|
||||
// type AppendedMeasure struct {
|
||||
// MetricID uint32
|
||||
// Timestamp uint32
|
||||
// Value float64
|
||||
// }
|
||||
|
||||
func (s AppendedMeasure) Pack(w io.Writer) {
|
||||
arr := []byte{
|
||||
CodeAppendedMeasure,
|
||||
0, 0, 0, 0, // metricID
|
||||
0, 0, 0, 0, // timestamp
|
||||
0, 0, 0, 0, 0, 0, 0, 0, // value
|
||||
}
|
||||
bin.PutUint32(arr[1:], s.MetricID)
|
||||
bin.PutUint32(arr[5:], s.Timestamp)
|
||||
bin.PutFloat64(arr[9:], s.Value)
|
||||
w.Write(arr)
|
||||
}
|
||||
// func (s AppendedMeasure) Pack(w io.Writer) {
|
||||
// arr := []byte{
|
||||
// CodeAppendedMeasure,
|
||||
// 0, 0, 0, 0, // metricID
|
||||
// 0, 0, 0, 0, // timestamp
|
||||
// 0, 0, 0, 0, 0, 0, 0, 0, // value
|
||||
// }
|
||||
// bin.PutUint32(arr[1:], s.MetricID)
|
||||
// bin.PutUint32(arr[5:], s.Timestamp)
|
||||
// bin.PutFloat64(arr[9:], s.Value)
|
||||
// w.Write(arr)
|
||||
// }
|
||||
|
||||
func (s *AppendedMeasure) Parse(src io.Reader) (err error) {
|
||||
arr, err := bin.ReadN(src, 16)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.MetricID, _ = bin.GetUint32(arr[0:])
|
||||
s.Timestamp, _ = bin.GetUint32(arr[4:])
|
||||
s.Value, _ = bin.GetFloat64(arr[8:])
|
||||
return nil
|
||||
}
|
||||
// func (s *AppendedMeasure) Parse(src io.Reader) (err error) {
|
||||
// arr, err := bin.ReadN(src, 16)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// s.MetricID, _ = bin.GetUint32(arr[0:])
|
||||
// s.Timestamp, _ = bin.GetUint32(arr[4:])
|
||||
// s.Value, _ = bin.GetFloat64(arr[8:])
|
||||
// return nil
|
||||
// }
|
||||
|
||||
type AppendedMeasures struct {
|
||||
MetricID uint32
|
||||
Measures []proto.Measure
|
||||
}
|
||||
// type AppendedMeasures struct {
|
||||
// MetricID uint32
|
||||
// Measures []proto.Measure
|
||||
// }
|
||||
|
||||
func (s AppendedMeasures) Pack(w io.Writer) {
|
||||
arr := []byte{
|
||||
CodeAppendedMeasures,
|
||||
0, 0, 0, 0, // metricID
|
||||
0, 0, // qty
|
||||
}
|
||||
bin.PutUint32(arr[1:], s.MetricID)
|
||||
bin.PutUint16(arr[5:], uint16(len(s.Measures)))
|
||||
w.Write(arr)
|
||||
for _, measure := range s.Measures {
|
||||
bin.WriteUint32(w, measure.Timestamp)
|
||||
bin.WriteFloat64(w, measure.Value)
|
||||
}
|
||||
}
|
||||
// func (s AppendedMeasures) Pack(w io.Writer) {
|
||||
// arr := []byte{
|
||||
// CodeAppendedMeasures,
|
||||
// 0, 0, 0, 0, // metricID
|
||||
// 0, 0, // qty
|
||||
// }
|
||||
// bin.PutUint32(arr[1:], s.MetricID)
|
||||
// bin.PutUint16(arr[5:], uint16(len(s.Measures)))
|
||||
// w.Write(arr)
|
||||
// for _, measure := range s.Measures {
|
||||
// bin.WriteUint32(w, measure.Timestamp)
|
||||
// bin.WriteFloat64(w, measure.Value)
|
||||
// }
|
||||
// }
|
||||
|
||||
func (s *AppendedMeasures) Parse(src io.Reader) (err error) {
|
||||
s.MetricID, err = bin.ReadUint32(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
qty, err := bin.ReadUint16(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for range qty {
|
||||
var measure proto.Measure
|
||||
measure.Timestamp, err = bin.ReadUint32(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
measure.Value, err = bin.ReadFloat64(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.Measures = append(s.Measures, measure)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
// func (s *AppendedMeasures) Parse(src io.Reader) (err error) {
|
||||
// s.MetricID, err = bin.ReadUint32(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// qty, err := bin.ReadUint16(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// for range qty {
|
||||
// var measure proto.Measure
|
||||
// measure.Timestamp, err = bin.ReadUint32(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// measure.Value, err = bin.ReadFloat64(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// s.Measures = append(s.Measures, measure)
|
||||
// }
|
||||
// return nil
|
||||
// }
|
||||
|
||||
type AppendedPagesReq struct {
|
||||
Legs []atree.PathLeg
|
||||
MetricID uint32
|
||||
Timestamp uint32 // last measure
|
||||
Value float64 // last measure
|
||||
//RootPageNo uint32
|
||||
LastPageNo uint32
|
||||
Pages []atree.NotLinkedDataPage
|
||||
TimestampsChunks [][]byte
|
||||
TimestampsSize uint16
|
||||
ValuesChunks [][]byte
|
||||
ValuesSize uint16
|
||||
}
|
||||
// type AppendedPagesReq struct {
|
||||
// Legs []atree.PathLeg
|
||||
// MetricID uint32
|
||||
// Timestamp uint32 // last measure
|
||||
// Value float64 // last measure
|
||||
// //RootPageNo uint32
|
||||
// LastPageNo uint32
|
||||
// Pages []atree.NotLinkedDataPage
|
||||
// TimestampsChunks [][]byte
|
||||
// TimestampsSize uint16
|
||||
// ValuesChunks [][]byte
|
||||
// ValuesSize uint16
|
||||
// }
|
||||
|
||||
/*
|
||||
4b metricID
|
||||
@@ -184,96 +182,96 @@ Nb - timestamps payload
|
||||
2b - values size (not filled page)
|
||||
Nb - values payload
|
||||
*/
|
||||
type AppendedPages struct {
|
||||
MetricID uint32
|
||||
Timestamp uint32 // last measure
|
||||
Value float64 // last measure
|
||||
NewRootPageNo uint32
|
||||
LastPageNo uint32
|
||||
Pages []atree.PageToWrite
|
||||
TimestampsChunks [][]byte
|
||||
TimestampsSize int
|
||||
ValuesChunks [][]byte
|
||||
ValuesSize int
|
||||
}
|
||||
// type AppendedPages struct {
|
||||
// MetricID uint32
|
||||
// Timestamp uint32 // last measure
|
||||
// Value float64 // last measure
|
||||
// NewRootPageNo uint32
|
||||
// LastPageNo uint32
|
||||
// Pages []atree.PageToWrite
|
||||
// TimestampsChunks [][]byte
|
||||
// TimestampsSize int
|
||||
// ValuesChunks [][]byte
|
||||
// ValuesSize int
|
||||
// }
|
||||
|
||||
func (s *AppendedPages) Pack(w io.Writer) {
|
||||
w.Write([]byte{
|
||||
CodeAppendedPages,
|
||||
})
|
||||
bin.WriteUint32(w, s.MetricID)
|
||||
bin.WriteUint32(w, s.Timestamp)
|
||||
bin.WriteFloat64(w, s.Value)
|
||||
bin.WriteUint32(w, s.LastPageNo)
|
||||
bin.WriteUint32(w, s.NewRootPageNo)
|
||||
//
|
||||
bin.WriteVarSize(w, len(s.Pages))
|
||||
for _, p := range s.Pages {
|
||||
bin.WriteUint32(w, p.PageNo)
|
||||
if p.IsReused {
|
||||
w.Write([]byte{1})
|
||||
} else {
|
||||
w.Write([]byte{0})
|
||||
}
|
||||
w.Write(p.Data)
|
||||
}
|
||||
// timestamps
|
||||
writeChunkedPayloadTo(s.TimestampsChunks, int(s.TimestampsSize), w)
|
||||
// values
|
||||
writeChunkedPayloadTo(s.ValuesChunks, int(s.ValuesSize), w)
|
||||
}
|
||||
// func (s *AppendedPages) Pack(w io.Writer) {
|
||||
// w.Write([]byte{
|
||||
// CodeAppendedPages,
|
||||
// })
|
||||
// bin.WriteUint32(w, s.MetricID)
|
||||
// bin.WriteUint32(w, s.Timestamp)
|
||||
// bin.WriteFloat64(w, s.Value)
|
||||
// bin.WriteUint32(w, s.LastPageNo)
|
||||
// bin.WriteUint32(w, s.NewRootPageNo)
|
||||
// //
|
||||
// bin.WriteVarSize(w, len(s.Pages))
|
||||
// for _, p := range s.Pages {
|
||||
// bin.WriteUint32(w, p.PageNo)
|
||||
// if p.IsReused {
|
||||
// w.Write([]byte{1})
|
||||
// } else {
|
||||
// w.Write([]byte{0})
|
||||
// }
|
||||
// w.Write(p.Data)
|
||||
// }
|
||||
// // timestamps
|
||||
// writeChunkedPayloadTo(s.TimestampsChunks, int(s.TimestampsSize), w)
|
||||
// // values
|
||||
// writeChunkedPayloadTo(s.ValuesChunks, int(s.ValuesSize), w)
|
||||
// }
|
||||
|
||||
func (s *AppendedPages) Parse(src io.Reader) (err error) {
|
||||
s.MetricID, err = bin.ReadUint32(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.Timestamp, err = bin.ReadUint32(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.Value, err = bin.ReadFloat64(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.LastPageNo, err = bin.ReadUint32(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.NewRootPageNo, err = bin.ReadUint32(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
pagesQty, err := bin.ReadVarSize(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for range pagesQty {
|
||||
var page atree.PageToWrite
|
||||
page.PageNo, err = bin.ReadUint32(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
page.IsReused, err = bin.ReadBool(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
page.Data, err = bin.ReadN(src, atree.PageSize)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.Pages = append(s.Pages, page)
|
||||
}
|
||||
s.TimestampsChunks, s.TimestampsSize, err = readChunkedPayload(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.ValuesChunks, s.ValuesSize, err = readChunkedPayload(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return nil
|
||||
}
|
||||
// func (s *AppendedPages) Parse(src io.Reader) (err error) {
|
||||
// s.MetricID, err = bin.ReadUint32(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// s.Timestamp, err = bin.ReadUint32(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// s.Value, err = bin.ReadFloat64(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// s.LastPageNo, err = bin.ReadUint32(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// s.NewRootPageNo, err = bin.ReadUint32(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// pagesQty, err := bin.ReadVarSize(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// for range pagesQty {
|
||||
// var page atree.PageToWrite
|
||||
// page.PageNo, err = bin.ReadUint32(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// page.IsReused, err = bin.ReadBool(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// page.Data, err = bin.ReadN(src, atree.PageSize)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// s.Pages = append(s.Pages, page)
|
||||
// }
|
||||
// s.TimestampsChunks, s.TimestampsSize, err = readChunkedPayload(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// s.ValuesChunks, s.ValuesSize, err = readChunkedPayload(src)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
// return nil
|
||||
// }
|
||||
|
||||
func writeChunkedPayloadTo(chunks [][]byte, size int, w io.Writer) {
|
||||
bin.WriteVarSize(w, size)
|
||||
|
||||
Reference in New Issue
Block a user