goProject/.svn/pristine/f6/f6f0135384da66767c5365f798b9e8c45711d2c8.svn-base

76 lines
1.4 KiB
Plaintext
Raw Normal View History

2025-01-06 16:21:36 +08:00
package sqlAsyncMgr
import (
"sync"
)
// SqlAsyncListModel 待同步sql列表模型对象
type SqlAsyncListModel struct {
// 锁对象
m sync.Mutex
// 待同步的sql对象
sqlData []*SqlAsyncItemModel
}
// newSqlAsyncListModel 创建新SqlAsyncListModel对象
func newSqlAsyncListModel() *SqlAsyncListModel {
return &SqlAsyncListModel{
sqlData: make([]*SqlAsyncItemModel, 0, 4),
}
}
// SqlCount 待同步的sql数量
func (this *SqlAsyncListModel) SqlCount() int32 {
this.m.Lock()
defer this.m.Unlock()
return int32(len(this.sqlData))
}
// Add 添加同步sql
func (this *SqlAsyncListModel) Add(newSqlModel *SqlAsyncItemModel) {
this.m.Lock()
defer this.m.Unlock()
this.sqlData = append(this.sqlData, newSqlModel)
}
// GetItem 获取同步对象
func (this *SqlAsyncListModel) GetItem() (*SqlAsyncItemModel, bool) {
this.m.Lock()
defer this.m.Unlock()
if len(this.sqlData) > 0 {
return this.sqlData[0], true
}
return nil, false
}
// RemoveFirst 移除首位元素
func (this *SqlAsyncListModel) RemoveFirst() {
this.m.Lock()
defer this.m.Unlock()
if len(this.sqlData) == 0 {
return
}
this.sqlData = this.sqlData[1:]
}
// GetAllSqlModel 获取所有的sql
func (this *SqlAsyncListModel) GetAllSqlModel() []*SqlAsyncItemModel {
this.m.Lock()
defer this.m.Unlock()
if len(this.sqlData) == 0 {
return nil
}
r := this.sqlData[0:]
return r
}