MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / rebuffer

Method rebuffer

pkg/util/logview/multibuf.go:45–76  ·  view source on GitHub ↗
(newOffset int64)

Source from the content-addressed store, hash-verified

43}
44
45func (mb *MultiBufferByteGetter) rebuffer(newOffset int64) error {
46 partNum := int(newOffset / mb.BufSize)
47 partOffset := int64(partNum) * mb.BufSize
48 newBuf := make([]byte, mb.BufSize)
49 n, err := mb.File.ReadAt(newBuf, partOffset)
50 var isEOF bool
51 if err == io.EOF {
52 newBuf = newBuf[:n]
53 isEOF = true
54 }
55 if err != nil {
56 return err
57 }
58 var newBuffers [][]byte
59 if len(mb.Buffers) > 0 {
60 firstBufPartNum := int(mb.Offset / mb.BufSize)
61 lastBufPartNum := int((mb.Offset + int64(mb.bufSize())) / mb.BufSize)
62 if firstBufPartNum == partNum+1 {
63 newBuffers = [][]byte{newBuf, mb.Buffers[0]}
64 } else if lastBufPartNum == partNum-1 {
65 newBuffers = [][]byte{mb.Buffers[0], newBuf}
66 } else {
67 newBuffers = [][]byte{newBuf}
68 }
69 } else {
70 newBuffers = [][]byte{newBuf}
71 }
72 mb.Buffers = newBuffers
73 mb.Offset = partOffset
74 mb.EOF = isEOF
75 return nil
76}
77
78func (mb *MultiBufferByteGetter) GetByte(offset int64) (byte, error) {
79 b, ok := mb.readFromBuffer(offset)

Callers 1

GetByteMethod · 0.95

Calls 2

bufSizeMethod · 0.95
ReadAtMethod · 0.80

Tested by

no test coverage detected