From ccecbf56bee5321f5c94e8da3c9022ee5d3d43ab Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Thu, 7 Apr 2022 19:28:29 +0200 Subject: [PATCH] client: use slice instead of map as track storage --- client.go | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/client.go b/client.go index 0e9cf786..6631bf6f 100644 --- a/client.go +++ b/client.go @@ -14,7 +14,6 @@ import ( "crypto/tls" "fmt" "net" - "sort" "strconv" "strings" "sync" @@ -213,7 +212,7 @@ type Client struct { lastDescribeURL *base.URL streamBaseURL *base.URL effectiveTransport *Transport - tracks map[int]*clientTrack + tracks []*clientTrack tracksByChannel map[int]int lastRange *headers.Range writeMutex sync.RWMutex // publish @@ -408,19 +407,9 @@ func (c *Client) Wait() error { // Tracks returns all the tracks that the client is reading or publishing. func (c *Client) Tracks() Tracks { - ids := make([]int, len(c.tracks)) - pos := 0 - for id := range c.tracks { - ids[pos] = id - pos++ - } - sort.Slice(ids, func(a, b int) bool { - return ids[a] < ids[b] - }) - - var ret Tracks - for _, id := range ids { - ret = append(ret, c.tracks[id].track) + ret := make(Tracks, len(c.tracks)) + for i, track := range c.tracks { + ret[i] = track.track } return ret } @@ -1562,11 +1551,7 @@ func (c *Client) doSetup( cct.tcpChannel = thRes.InterleavedIDs[0] } - if c.tracks == nil { - c.tracks = make(map[int]*clientTrack) - } - - c.tracks[trackID] = cct + c.tracks = append(c.tracks, cct) return res, nil }