|
|
package connection
|
|
|
|
|
|
// ManagerInterface 连接管理器接口
|
|
|
type ManagerInterface interface {
|
|
|
// Add 添加连接
|
|
|
Add(conn ConnectionInterface) error
|
|
|
|
|
|
// Remove 移除连接
|
|
|
Remove(connID string) error
|
|
|
|
|
|
// Get 获取连接
|
|
|
Get(connID string) (ConnectionInterface, error)
|
|
|
|
|
|
// Count 获取连接数
|
|
|
Count() int
|
|
|
|
|
|
// GetAll 获取所有连接
|
|
|
GetAll() []ConnectionInterface
|
|
|
|
|
|
// AddToGroup 将连接添加到分组(使用字符串分组策略)
|
|
|
AddToGroup(groupID string, connID string) error
|
|
|
|
|
|
// RemoveFromGroup 从分组中移除连接
|
|
|
RemoveFromGroup(groupID string, connID string) error
|
|
|
|
|
|
// GetGroup 获取分组(使用字符串分组策略)
|
|
|
GetGroup(groupID string) []ConnectionInterface
|
|
|
|
|
|
// BroadcastToGroup 向分组广播消息
|
|
|
BroadcastToGroup(groupID string, data []byte) error
|
|
|
|
|
|
// AddToGroupByStrategy 使用分组策略将连接添加到分组
|
|
|
// 如果策略支持自动分组,会自动获取分组ID
|
|
|
AddToGroupByStrategy(groupID string, connID string, strategy GroupStrategy) error
|
|
|
|
|
|
// GetGroupByStrategy 使用分组策略获取分组
|
|
|
GetGroupByStrategy(groupID string, strategy GroupStrategy) []ConnectionInterface
|
|
|
|
|
|
// RegisterGroupStrategy 注册分组策略(用于自动分组)
|
|
|
// name: 策略名称
|
|
|
// strategy: 分组策略
|
|
|
RegisterGroupStrategy(name string, strategy GroupStrategy)
|
|
|
|
|
|
// GetGroupStrategy 获取已注册的分组策略
|
|
|
GetGroupStrategy(name string) GroupStrategy
|
|
|
|
|
|
// CleanupInactive 清理非活动连接
|
|
|
CleanupInactive(timeout interface{}) // 使用interface{}以兼容不同的实现
|
|
|
|
|
|
// AddIndex 添加索引(通过业务数据查询连接)
|
|
|
// key: 索引键(如 "hardware_id")
|
|
|
// value: 索引值(如 "device_001")
|
|
|
// connID: 连接ID
|
|
|
AddIndex(key, value string, connID string) error
|
|
|
|
|
|
// RemoveIndex 移除索引
|
|
|
RemoveIndex(key, value string, connID string) error
|
|
|
|
|
|
// FindByIndex 通过索引查找连接
|
|
|
FindByIndex(key, value string) (ConnectionInterface, error)
|
|
|
|
|
|
// FindByIndexKey 通过索引键查找所有连接
|
|
|
FindByIndexKey(key string) ([]ConnectionInterface, error)
|
|
|
}
|