Source File
permission.go
Belonging Package
github.com/pion/turn/v4/internal/client
// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>// SPDX-License-Identifier: MITpackage clientimport ()type permState int32const (permStateIdle permState = iotapermStatePermitted)type permission struct {addr net.Addrst permState // Thread-safe (atomic op)mutex sync.RWMutex // Thread-safe}func ( *permission) ( permState) {atomic.StoreInt32((*int32)(&.st), int32())}func ( *permission) () permState {return permState(atomic.LoadInt32((*int32)(&.st)))}// Thread-safe permission map.type permissionMap struct {permMap map[string]*permissionmutex sync.RWMutex}func ( *permissionMap) ( net.Addr, *permission) bool {.mutex.Lock()defer .mutex.Unlock().addr =.permMap[ipnet.FingerprintAddr()] =return true}func ( *permissionMap) ( net.Addr) (*permission, bool) {.mutex.RLock()defer .mutex.RUnlock(), := .permMap[ipnet.FingerprintAddr()]return ,}func ( *permissionMap) ( net.Addr) {.mutex.Lock()defer .mutex.Unlock()delete(.permMap, ipnet.FingerprintAddr())}func ( *permissionMap) () []net.Addr {.mutex.RLock()defer .mutex.RUnlock():= []net.Addr{}for , := range .permMap {= append(, .addr)}return}func newPermissionMap() *permissionMap {return &permissionMap{permMap: map[string]*permission{},}}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |