mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-12-20 03:59:49 +08:00
message broker: read also from sealed memory buffer
This commit is contained in:
@@ -4,6 +4,7 @@ import "time"
|
||||
|
||||
type MemBuffer struct {
|
||||
buf []byte
|
||||
size int
|
||||
startTime time.Time
|
||||
stopTime time.Time
|
||||
}
|
||||
@@ -25,16 +26,30 @@ func newSealedBuffers(size int) *SealedBuffers {
|
||||
return sbs
|
||||
}
|
||||
|
||||
func (sbs *SealedBuffers) SealBuffer(startTime, stopTime time.Time, buf []byte) (newBuf []byte) {
|
||||
func (sbs *SealedBuffers) SealBuffer(startTime, stopTime time.Time, buf []byte, pos int) (newBuf []byte) {
|
||||
oldMemBuffer := sbs.buffers[0]
|
||||
size := len(sbs.buffers)
|
||||
for i := 0; i < size-1; i++ {
|
||||
sbs.buffers[i].buf = sbs.buffers[i+1].buf
|
||||
sbs.buffers[i].size = sbs.buffers[i+1].size
|
||||
sbs.buffers[i].startTime = sbs.buffers[i+1].startTime
|
||||
sbs.buffers[i].stopTime = sbs.buffers[i+1].stopTime
|
||||
}
|
||||
sbs.buffers[size-1].buf = buf
|
||||
sbs.buffers[size-1].size = pos
|
||||
sbs.buffers[size-1].startTime = startTime
|
||||
sbs.buffers[size-1].stopTime = stopTime
|
||||
return oldMemBuffer.buf
|
||||
}
|
||||
|
||||
func (mb *MemBuffer) locateByTs(lastReadTime time.Time) (pos int) {
|
||||
lastReadTs := lastReadTime.UnixNano()
|
||||
for pos < len(mb.buf) {
|
||||
size, t := readTs(mb.buf, pos)
|
||||
if t > lastReadTs {
|
||||
return
|
||||
}
|
||||
pos += size + 4
|
||||
}
|
||||
return len(mb.buf)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user