wp
This commit is contained in:
@@ -288,67 +288,6 @@ func (s *Database) relayMetricsToMetrics(replayMetrics map[uint32]*ReplayMetric)
|
||||
}
|
||||
}
|
||||
|
||||
// FIX
|
||||
// УВАГА!
|
||||
// Якщо буфер metric.buffer < розміру сторінки - для timestamps доступний весь буфер.
|
||||
// Якщо буфер досяг розміру сторінки - в timestamps я передаю buffer[:DataPagePayloadSize]
|
||||
|
||||
var dataBufferSizes = []int{
|
||||
1024,
|
||||
2048,
|
||||
4096,
|
||||
8192,
|
||||
}
|
||||
|
||||
func calculateDataBufferSize(payloadSize int) int {
|
||||
for _, bufferSize := range dataBufferSizes {
|
||||
if payloadSize <= bufferSize {
|
||||
return bufferSize
|
||||
}
|
||||
}
|
||||
return storage.DataPageSize
|
||||
}
|
||||
|
||||
func allocateBuffers(requiredSpace int) (buf, databuf []byte) {
|
||||
bufferSize := calculateDataBufferSize(requiredSpace)
|
||||
buf = make([]byte, bufferSize)
|
||||
if bufferSize == storage.DataPageSize {
|
||||
databuf = buf[:storage.DataPagePayloadSize]
|
||||
} else {
|
||||
databuf = buf
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// src - databuf
|
||||
type growBuffersIn struct {
|
||||
databuf []byte
|
||||
tSize int
|
||||
vSize int
|
||||
requiredSpace int
|
||||
}
|
||||
|
||||
func growBuffers(in growBuffersIn) (buf, databuf []byte) {
|
||||
buf, databuf = allocateBuffers(in.requiredSpace)
|
||||
copy(databuf[len(databuf)-in.tSize:], in.databuf[len(in.databuf)-in.tSize:])
|
||||
copy(databuf, in.databuf[:in.vSize])
|
||||
return
|
||||
}
|
||||
|
||||
type shrinkBufferIn struct {
|
||||
Buffer []byte
|
||||
TimestampsSize int
|
||||
ValuesSize int
|
||||
NewBufferSize int
|
||||
}
|
||||
|
||||
func shrinkBuffer(in shrinkBufferIn) []byte {
|
||||
buf := make([]byte, in.NewBufferSize)
|
||||
copy(buf, in.Buffer[:in.ValuesSize])
|
||||
copy(buf[:len(buf)-in.TimestampsSize], in.Buffer[len(in.Buffer)-in.TimestampsSize:])
|
||||
return buf
|
||||
}
|
||||
|
||||
//func (s *Database) verifySnapshot(fileName string) (_ bool, err error) {
|
||||
// file, err := os.Open(fileName)
|
||||
// if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user