feat(pool): 修改NewBadgerPool函数接受数据库路径参数并移除GetAllConnIDs方法

- 修改NewBadgerPool函数签名以接受badgerDir字符串参数
- 将默认数据库路径配置改为通过参数传入
- 移除GetAllConnIDs方法及其相关实现代码
- 更新TCPServer和WebSocket Manager构造函数以传递数据库路径
- 修复TCP服务器和WebSocket示例中的初始化调用
main v1.0.1005
black1552 2026-02-27 10:06:26 +08:00
parent 5e22f2c2c0
commit 4c300374cb
5 changed files with 8 additions and 54 deletions

View File

@ -43,10 +43,10 @@ type BadgerPool struct {
} }
// NewBadgerPool 创建BadgerDB连接池 // NewBadgerPool 创建BadgerDB连接池
func NewBadgerPool() (*BadgerPool, error) { func NewBadgerPool(badgerDir string) (*BadgerPool, error) {
ctx, cancel := context.WithCancel(context.Background()) 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 { if err != nil {
cancel() cancel()
return nil, fmt.Errorf("failed to open badger db: %w", err) return nil, fmt.Errorf("failed to open badger db: %w", err)
@ -265,52 +265,6 @@ func (p *BadgerPool) Count() (int, error) {
return count, nil 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 清理不活跃的连接 // CleanupInactive 清理不活跃的连接
func (p *BadgerPool) CleanupInactive(duration time.Duration) error { func (p *BadgerPool) CleanupInactive(duration time.Duration) error {
allConns, err := p.GetAll() allConns, err := p.GetAll()

View File

@ -19,7 +19,7 @@ func NewWs() *Manager {
} }
// 2. 创建管理器 // 2. 创建管理器
m, err := NewManager(customConfig) m, err := NewManager(customConfig, "./badger/ws")
if err != nil { if err != nil {
log.Fatalf("Failed to create manager: %v", err) log.Fatalf("Failed to create manager: %v", err)
} }

View File

@ -150,7 +150,7 @@ func (c *Config) Merge(other *Config) *Config {
} }
// NewManager 创建连接管理器 // NewManager 创建连接管理器
func NewManager(config *Config) (*Manager, error) { func NewManager(config *Config, dbPath string) (*Manager, error) {
defaultConfig := DefaultConfig() defaultConfig := DefaultConfig()
finalConfig := defaultConfig.Merge(config) finalConfig := defaultConfig.Merge(config)
// 初始化升级器 // 初始化升级器
@ -173,7 +173,7 @@ func NewManager(config *Config) (*Manager, error) {
} }
// 初始化BadgerDB连接池 // 初始化BadgerDB连接池
badgerPool, err := pool.NewBadgerPool() badgerPool, err := pool.NewBadgerPool(dbPath)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to create badger pool: %w", err) return nil, fmt.Errorf("failed to create badger pool: %w", err)
} }

View File

@ -18,7 +18,7 @@ func Example() {
} }
// 创建TCP服务器 // 创建TCP服务器
server, err := NewTCPServer("0.0.0.0:8888", config) server, err := NewTCPServer("0.0.0.0:8888", config, "./badger/tcp")
if err != nil { if err != nil {
fmt.Printf("Failed to create server: %v\n", err) fmt.Printf("Failed to create server: %v\n", err)
return return

View File

@ -40,12 +40,12 @@ type ConnectionPool struct {
} }
// NewTCPServer 创建一个新的TCP服务器 // NewTCPServer 创建一个新的TCP服务器
func NewTCPServer(address string, config *TcpPoolConfig) (*TCPServer, error) { func NewTCPServer(address string, config *TcpPoolConfig, dbPath string) (*TCPServer, error) {
logger := g.Log(address) logger := g.Log(address)
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
// 初始化BadgerDB连接池 // 初始化BadgerDB连接池
badgerPool, err := pool.NewBadgerPool() badgerPool, err := pool.NewBadgerPool(dbPath)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to create badger pool: %w", err) return nil, fmt.Errorf("failed to create badger pool: %w", err)
} }