mirror of
https://github.com/stashapp/stash.git
synced 2025-12-08 09:23:38 +01:00
57 lines
1 KiB
Go
57 lines
1 KiB
Go
package astits
|
|
|
|
import "sync"
|
|
|
|
// programMap represents a program ids map
|
|
type programMap struct {
|
|
m *sync.Mutex
|
|
p map[uint16]uint16 // map[ProgramMapID]ProgramNumber
|
|
}
|
|
|
|
// newProgramMap creates a new program ids map
|
|
func newProgramMap() programMap {
|
|
return programMap{
|
|
m: &sync.Mutex{},
|
|
p: make(map[uint16]uint16),
|
|
}
|
|
}
|
|
|
|
// exists checks whether the program with this pid exists
|
|
func (m programMap) exists(pid uint16) (ok bool) {
|
|
m.m.Lock()
|
|
defer m.m.Unlock()
|
|
_, ok = m.p[pid]
|
|
return
|
|
}
|
|
|
|
// set sets a new program id
|
|
func (m programMap) set(pid, number uint16) {
|
|
m.m.Lock()
|
|
defer m.m.Unlock()
|
|
m.p[pid] = number
|
|
}
|
|
|
|
func (m programMap) unset(pid uint16) {
|
|
m.m.Lock()
|
|
defer m.m.Unlock()
|
|
delete(m.p, pid)
|
|
}
|
|
|
|
func (m programMap) toPATData() *PATData {
|
|
m.m.Lock()
|
|
defer m.m.Unlock()
|
|
|
|
d := &PATData{
|
|
Programs: []*PATProgram{},
|
|
TransportStreamID: uint16(PSITableIDPAT),
|
|
}
|
|
|
|
for pid, pnr := range m.p {
|
|
d.Programs = append(d.Programs, &PATProgram{
|
|
ProgramMapID: pid,
|
|
ProgramNumber: pnr,
|
|
})
|
|
}
|
|
|
|
return d
|
|
}
|