tmp
This commit is contained in:
@@ -1,13 +1,15 @@
|
||||
package txlog
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
|
||||
bin "gordenko.dev/dima/bin/little"
|
||||
"gordenko.dev/dima/qb"
|
||||
"gordenko.dev/dima/qb/conbuf"
|
||||
"gordenko.dev/dima/qb/util"
|
||||
)
|
||||
|
||||
var (
|
||||
indexRecordSize = 8
|
||||
)
|
||||
|
||||
type AddedMetric struct {
|
||||
@@ -359,62 +361,3 @@ Nb - values payload
|
||||
// }
|
||||
|
||||
// PACK
|
||||
|
||||
type PreparedData struct {
|
||||
Packet []byte // пакет для запису в WAL
|
||||
WriteToIndex []IndexPayloadToWrite
|
||||
WriteToData []DataPayloadToWrite
|
||||
ToWorker []any
|
||||
}
|
||||
|
||||
func prepareData(input []any) PreparedData {
|
||||
buffer := bytes.NewBuffer(nil)
|
||||
buffer.Write([]byte{
|
||||
0, 0, 0, 0, 0, 0, 0, 0, // size (max 8 byte)
|
||||
0, 0, 0, 0, // crc32
|
||||
})
|
||||
|
||||
hasher := util.NewHasher()
|
||||
|
||||
w := io.MultiWriter(buffer, hasher)
|
||||
|
||||
var (
|
||||
writeToIndex []IndexPayloadToWrite
|
||||
writeToData []DataPayloadToWrite
|
||||
)
|
||||
|
||||
// 1. Пакую всі дані в WAL буфер запису
|
||||
for _, untyped := range input {
|
||||
switch x := untyped.(type) {
|
||||
case AddedMetric:
|
||||
x.Pack(w)
|
||||
// case DeletedMetric:
|
||||
// if len(x.FreePageNumbers) > 0 {
|
||||
// s.freeList.AddPageNumbers(x.FreePageNumbers)
|
||||
// }
|
||||
case AppendedMeasures:
|
||||
//s.packMeasuresIntoWALBuffer(x)
|
||||
//case DeletedMeasures:
|
||||
//case DeletedMeasuresSince:
|
||||
}
|
||||
}
|
||||
// 2. Додаю розмір пакету і чексуму
|
||||
|
||||
//s.written += int64(len(packet)) + 12
|
||||
|
||||
packet := buffer.Bytes()
|
||||
// write size
|
||||
payloadSize := len(packet) - 12
|
||||
start := 8 - bin.CountVarSize(payloadSize)
|
||||
bin.PutVarSize(packet[start:], payloadSize)
|
||||
// checksum
|
||||
bin.PutUint32(packet[8:], hasher.Sum32())
|
||||
//
|
||||
//totalSize := (12 - start) + payloadSize
|
||||
|
||||
return PreparedData{
|
||||
Packet: packet[start:],
|
||||
WriteToIndex: writeToIndex,
|
||||
WriteToData: writeToData,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user