feat(pool): 修改NewBadgerPool函数接受数据库路径参数并移除GetAllConnIDs方法
- 修改NewBadgerPool函数签名以接受badgerDir字符串参数 - 将默认数据库路径配置改为通过参数传入 - 移除GetAllConnIDs方法及其相关实现代码 - 更新TCPServer和WebSocket Manager构造函数以传递数据库路径 - 修复TCP服务器和WebSocket示例中的初始化调用
This commit is contained in:
+2
-48
@@ -43,10 +43,10 @@ type BadgerPool struct {
|
||||
}
|
||||
|
||||
// NewBadgerPool 创建BadgerDB连接池
|
||||
func NewBadgerPool() (*BadgerPool, error) {
|
||||
func NewBadgerPool(badgerDir string) (*BadgerPool, error) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
db, err := badger.Open(badger.DefaultOptions(filepath.Join(gfile.Pwd(), "badger")))
|
||||
db, err := badger.Open(badger.DefaultOptions(badgerDir))
|
||||
if err != nil {
|
||||
cancel()
|
||||
return nil, fmt.Errorf("failed to open badger db: %w", err)
|
||||
@@ -265,52 +265,6 @@ func (p *BadgerPool) Count() (int, error) {
|
||||
return count, nil
|
||||
}
|
||||
|
||||
// GetAllConnIDs 获取所有在线连接的ID列表
|
||||
func (p *BadgerPool) GetAllConnIDs() ([]string, error) {
|
||||
p.mutex.RLock()
|
||||
// 如果内存缓存不为空,从缓存中提取在线连接的ID
|
||||
if len(p.cache) > 0 {
|
||||
ids := make([]string, 0, len(p.cache))
|
||||
for id, conn := range p.cache {
|
||||
if conn.IsActive {
|
||||
ids = append(ids, id)
|
||||
}
|
||||
}
|
||||
p.mutex.RUnlock()
|
||||
return ids, nil
|
||||
}
|
||||
p.mutex.RUnlock()
|
||||
|
||||
// 从BadgerDB获取所有在线连接的ID
|
||||
var ids []string
|
||||
err := p.db.View(func(txn *badger.Txn) error {
|
||||
opts := badger.DefaultIteratorOptions
|
||||
opts.PrefetchSize = 10
|
||||
it := txn.NewIterator(opts)
|
||||
defer it.Close()
|
||||
|
||||
for it.Rewind(); it.Valid(); it.Next() {
|
||||
item := it.Item()
|
||||
var connInfo ConnectionInfo
|
||||
err := item.Value(func(val []byte) error {
|
||||
return json.Unmarshal(val, &connInfo)
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if connInfo.IsActive {
|
||||
ids = append(ids, string(item.Key()))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get all connection IDs: %w", err)
|
||||
}
|
||||
|
||||
return ids, nil
|
||||
}
|
||||
|
||||
// CleanupInactive 清理不活跃的连接
|
||||
func (p *BadgerPool) CleanupInactive(duration time.Duration) error {
|
||||
allConns, err := p.GetAll()
|
||||
|
||||
Reference in New Issue
Block a user