feat(pool): 修改NewBadgerPool函数接受数据库路径参数并移除GetAllConnIDs方法
- 修改NewBadgerPool函数签名以接受badgerDir字符串参数 - 将默认数据库路径配置改为通过参数传入 - 移除GetAllConnIDs方法及其相关实现代码 - 更新TCPServer和WebSocket Manager构造函数以传递数据库路径 - 修复TCP服务器和WebSocket示例中的初始化调用main v1.0.1005
parent
5e22f2c2c0
commit
4c300374cb
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue