isSingleNode determines whether reading needs to cross nodes. isSingleNode will move b.read to latest non-empty node if there is a zero-size node Must require b.Len() > 0
(readN int)
| 812 | // isSingleNode will move b.read to latest non-empty node if there is a zero-size node |
| 813 | // Must require b.Len() > 0 |
| 814 | func (b *UnsafeLinkBuffer) isSingleNode(readN int) (single bool) { |
| 815 | if readN <= 0 { |
| 816 | return true |
| 817 | } |
| 818 | l := b.read.Len() |
| 819 | for l == 0 && b.read != b.flush { |
| 820 | b.read = b.read.next |
| 821 | l = b.read.Len() |
| 822 | } |
| 823 | return l >= readN |
| 824 | } |
| 825 | |
| 826 | // memorySize return the real memory size in bytes the LinkBuffer occupied |
| 827 | func (b *LinkBuffer) memorySize() (bytes int) { |