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连接池
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()

View File

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

View File

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

View File

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

View File

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