Skip to content

Commit

Permalink
Move demuxArena to message.go, where it is used.
Browse files Browse the repository at this point in the history
  • Loading branch information
lthibault committed Feb 25, 2023
1 parent fbb5d67 commit d998c09
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 18 deletions.
18 changes: 0 additions & 18 deletions arena.go
Original file line number Diff line number Diff line change
Expand Up @@ -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))
}
Expand Down
18 changes: 18 additions & 0 deletions message.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit d998c09

Please sign in to comment.