This commit is contained in:
2026-06-06 15:36:27 +03:00
parent 05eea3b279
commit 0e019118c2
9 changed files with 229 additions and 1206 deletions

View File

@@ -7,7 +7,6 @@ import (
bin "gordenko.dev/dima/bin/little"
"gordenko.dev/dima/qb"
"gordenko.dev/dima/qb/conbuf"
)
// COMPRESSOR REVERSE
@@ -209,25 +208,26 @@ func (s *ReverseCumulativeDeltaCompressor) Offset() int {
}
func (s *ReverseCumulativeDeltaCompressor) Snapshot() ([]byte, int) {
if s.state == nil {
return s.buf, s.Size()
}
// ВАЖЛИВО!
// Треба відтворити стан останнього чанка
var (
pos = s.state.Pos
chunk = make([]byte, conbuf.ChunkSize)
lastChunkIdx = len(s.state.Chunks) - 1
qtyToCopy = pos % conbuf.ChunkSize
)
copy(chunk, s.state.Chunks[lastChunkIdx][:qtyToCopy])
chunks := append(s.state.Chunks[:lastChunkIdx], chunk)
// if s.state == nil {
// return s.buf, s.Size()
// }
// // ВАЖЛИВО!
// // Треба відтворити стан останнього чанка
// var (
// pos = s.state.Pos
// chunk = make([]byte, conbuf.ChunkSize)
// lastChunkIdx = len(s.state.Chunks) - 1
// qtyToCopy = pos % conbuf.ChunkSize
// )
// copy(chunk, s.state.Chunks[lastChunkIdx][:qtyToCopy])
// chunks := append(s.state.Chunks[:lastChunkIdx], chunk)
buf := conbuf.New(chunks)
pos += buf.ReversePutVarUint64(pos, s.state.LastDelta)
buf.SetByte(pos, s.state.H)
pos++
return chunks, pos
// buf := conbuf.New(chunks)
// pos += buf.ReversePutVarUint64(pos, s.state.LastDelta)
// buf.SetByte(pos, s.state.H)
// pos++
// return chunks, pos
return nil, 0
}
func (s *ReverseCumulativeDeltaCompressor) CreateDecompressor(fracDigits byte) qb.ValueDecompressor {