Files
proxy/gateway/app/app.go

51 lines
1.2 KiB
Go

package app
import (
"proxy-server/gateway/core"
"proxy-server/utils"
)
type Stoppable interface {
Stop()
}
var (
Id int32
Name string
PlatformSecret string // 平台密钥,验证接收的请求是否属于平台
Assigns = core.SyncMap[uint16, int32]{} // 转发端口 -> 节点 ID
Edges = core.SyncMap[int32, uint16]{} // 节点 ID -> 转发端口
Permits = core.SyncMap[int32, *core.Permit]{} // 转发端口 -> 权限配置
CtrlConnWg utils.CountWaitGroup // 控制通道计数器
DataConnWg utils.CountWaitGroup // 数据通道计数器
FwdLesWg utils.CountWaitGroup // 转发监听端口计数器
UserConnWg utils.CountWaitGroup // 用户连接计数器
UserConnMap core.SyncMap[string, *core.Conn] // 用户连接暂存
)
func AddEdge(id int32, port uint16) {
Edges.Store(id, port)
Assigns.Store(port, id)
}
func DelEdge(port uint16) {
id, _ := Assigns.LoadAndDelete(port)
Edges.Delete(id)
}
func LoadPermit(port uint16) *core.Permit {
id, ok := Assigns.Load(port)
if !ok {
return nil
}
permit, ok := Permits.Load(id)
if !ok {
return nil
}
return permit
}