1 Star 0 Fork 0

庞飞/multiapp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
channel.go 1.25 KB
一键复制 编辑 原始数据 按行查看 历史
庞飞 提交于 2023-10-03 10:28 +08:00 . 合并主框架
package websocket
import (
"sync"
)
var channelMap *channels
type channelName = string
const tmaicDefaultChannelName = "tmaicDefaultChannel"
func init() {
channelMap = &channels{
channels: make(map[channelName]*connectionHubMap),
}
}
type channels struct {
lock sync.RWMutex
channels map[channelName]*connectionHubMap
}
func (c *channels) LeaveAll(hub Hub) {
for _, hubMap := range c.channels {
hubMap.Remove(hub.name())
}
}
func (c *channels) Hubs(channelName channelName) *connectionHubMap {
c.lock.RLock()
defer c.lock.RUnlock()
if hubMap, ok := c.channels[channelName]; ok {
if hubMap == nil {
return newConnectionHubMap()
}
return hubMap
}
return newConnectionHubMap()
}
func (c *channels) Leave(channelName channelName, hub Hub) {
c.lock.Lock()
defer c.lock.Unlock()
if hubMap, ok := c.channels[channelName]; ok {
if hubMap == nil {
return
}
c.channels[channelName].Remove(hub.name())
}
return
}
func (c *channels) Join(channelName string, hub Hub) {
c.lock.Lock()
defer c.lock.Unlock()
if hubMap, ok := c.channels[channelName]; ok {
if hubMap == nil {
c.channels[channelName] = newConnectionHubMap()
}
} else {
c.channels[channelName] = newConnectionHubMap()
}
c.channels[channelName].Add(hub)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/pangxianfei/multiapp.git
git@gitee.com:pangxianfei/multiapp.git
pangxianfei
multiapp
multiapp
v1.2.3

搜索帮助