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 }