76 lines
1.4 KiB
Plaintext
76 lines
1.4 KiB
Plaintext
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
|
|
}
|