diff --git a/arena.go b/arena.go index 1ddd1689..ef503536 100644 --- a/arena.go +++ b/arena.go @@ -185,24 +185,6 @@ var multiSegmentPool = sync.Pool{ }, } -// demuxArena slices b into a multi-segment arena. It assumes that -// len(data) >= hdr.totalSize(). -func demuxArena(hdr streamHeader, data []byte) (Arena, error) { - maxSeg := hdr.maxSegment() - if int64(maxSeg) > int64(maxInt-1) { - return nil, errors.New("number of segments overflows int") - } - segs := make([][]byte, int(maxSeg+1)) - for i := range segs { - sz, err := hdr.segmentSize(SegmentID(i)) - if err != nil { - return nil, err - } - segs[i], data = data[:sz:sz], data[sz:] - } - return MultiSegment(segs), nil -} - func (msa *MultiSegmentArena) NumSegments() int64 { return int64(len(*msa)) } diff --git a/message.go b/message.go index 341dfb86..e360eaf5 100644 --- a/message.go +++ b/message.go @@ -762,4 +762,22 @@ func hasCapacity(b []byte, sz Size) bool { return sz <= Size(cap(b)-len(b)) } +// demuxArena slices b into a multi-segment arena. It assumes that +// len(data) >= hdr.totalSize(). +func demuxArena(hdr streamHeader, data []byte) (Arena, error) { + maxSeg := hdr.maxSegment() + if int64(maxSeg) > int64(maxInt-1) { + return nil, errors.New("number of segments overflows int") + } + segs := make([][]byte, int(maxSeg+1)) + for i := range segs { + sz, err := hdr.segmentSize(SegmentID(i)) + if err != nil { + return nil, err + } + segs[i], data = data[:sz:sz], data[sz:] + } + return MultiSegment(segs), nil +} + const maxInt = int(^uint(0) >> 1)