diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-04-20 17:26:38 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-04-20 17:26:38 -0700 |
| commit | 4bf959edf0195bdd80fc268f795f6e9710e0b269 (patch) | |
| tree | e904883e8b084a3e35ac0bbb93f39d6495bf8a0a /weed/util/log_buffer/sealed_buffer.go | |
| parent | bd43c62fbd659d6a7a058de3b4888e34f7cfd64f (diff) | |
| download | seaweedfs-4bf959edf0195bdd80fc268f795f6e9710e0b269.tar.xz seaweedfs-4bf959edf0195bdd80fc268f795f6e9710e0b269.zip | |
message broker: read also from sealed memory buffer
Diffstat (limited to 'weed/util/log_buffer/sealed_buffer.go')
| -rw-r--r-- | weed/util/log_buffer/sealed_buffer.go | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/weed/util/log_buffer/sealed_buffer.go b/weed/util/log_buffer/sealed_buffer.go index c5160fad0..e412b5f32 100644 --- a/weed/util/log_buffer/sealed_buffer.go +++ b/weed/util/log_buffer/sealed_buffer.go @@ -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) +} |
