Zinx-V0.9 链接管理模块

    xiaoxiao2025-06-01  96

    链接管理模块

    属性

    Connection链接的集合

    针对map的互斥锁

    方法

    添加链接

    //添加链接 func (cm *ConnManager) Add(conn ziface.IConnection) { //加锁 cm.connLock.Lock() defer cm.connLock.Unlock() cm.connections[conn.GetConnID()] = conn fmt.Println("Add connid = ", conn.GetConnID(), "to manager succ") }

    删除链接

    func (cm *ConnManager) Remove(connID uint32) { //加锁 cm.connLock.Lock() defer cm.connLock.Unlock() delete(cm.connections, connID) fmt.Println("delete connid = ", connID, "from manager succ") }

    根据链接ID得到链接

    //根据链接ID得到链接 func (cm *ConnManager) Get(connID uint32) (ziface.IConnection, error) { //加读锁 cm.connLock.RLock() defer cm.connLock.RUnlock() if conn, ok := cm.connections[connID]; ok { //找到了 return conn, nil } else { return nil, errors.New("connection not Found!") } }

    得到目前服务器的链接总个数

    //得到当前服务器链接的总个数 func (cm *ConnManager) Len() uint32 { return uint32(len(cm.connections)) }

    清空全部链接方法

    //清空链接 func (cm *ConnManager) ClearConn() { //加锁 cm.connLock.Lock() defer cm.connLock.Unlock() //遍历删除 for connID, conn := range cm.connections { //将全部的conn 关闭 conn.Stop() //删除链接 delete(cm.connections, connID) } fmt.Println("Clear All Conections succ! conn num = ", cm.Len()) }
    将管理模块集成到zinx框架中
    给connection增加一个属于server的属性将ConnManager加入到server模块每次成功与客户端连接后,判断最大链接数,没达到则将新链接添加到链接管理模块每次与客户端的链接断开后,将链接从链接管理模块中删除服务器停止后,清空全部链接
    全局配置

    最大链接数量

    最新回复(0)