chore: avoid unneeded map copy when close connection in restful api
This commit is contained in:
@ -38,11 +38,11 @@ type Manager struct {
|
||||
memory uint64
|
||||
}
|
||||
|
||||
func (m *Manager) Join(c tracker) {
|
||||
func (m *Manager) Join(c Tracker) {
|
||||
m.connections.Store(c.ID(), c)
|
||||
}
|
||||
|
||||
func (m *Manager) Leave(c tracker) {
|
||||
func (m *Manager) Leave(c Tracker) {
|
||||
m.connections.Delete(c.ID())
|
||||
}
|
||||
|
||||
@ -66,9 +66,9 @@ func (m *Manager) Memory() uint64 {
|
||||
}
|
||||
|
||||
func (m *Manager) Snapshot() *Snapshot {
|
||||
connections := []tracker{}
|
||||
connections := []Tracker{}
|
||||
m.connections.Range(func(key, value any) bool {
|
||||
connections = append(connections, value.(tracker))
|
||||
connections = append(connections, value.(Tracker))
|
||||
return true
|
||||
})
|
||||
return &Snapshot{
|
||||
@ -79,6 +79,12 @@ func (m *Manager) Snapshot() *Snapshot {
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Manager) ConnectionsRange(f func(c Tracker) bool) {
|
||||
m.connections.Range(func(key, value any) bool {
|
||||
return f(value.(Tracker))
|
||||
})
|
||||
}
|
||||
|
||||
func (m *Manager) updateMemory() {
|
||||
stat, err := m.process.MemoryInfo()
|
||||
if err != nil {
|
||||
@ -110,6 +116,6 @@ func (m *Manager) handle() {
|
||||
type Snapshot struct {
|
||||
DownloadTotal int64 `json:"downloadTotal"`
|
||||
UploadTotal int64 `json:"uploadTotal"`
|
||||
Connections []tracker `json:"connections"`
|
||||
Connections []Tracker `json:"connections"`
|
||||
Memory uint64 `json:"memory"`
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import (
|
||||
"github.com/gofrs/uuid/v5"
|
||||
)
|
||||
|
||||
type tracker interface {
|
||||
type Tracker interface {
|
||||
ID() string
|
||||
Close() error
|
||||
C.Connection
|
||||
|
Reference in New Issue
Block a user