Files
2026-06-07 18:19:15 +02:00

64 lines
1.0 KiB
Go

package operator
import (
"sync/atomic"
"time"
"mbase/app/maindb"
"mbase/pkg/logger"
)
type OperatorConfig struct {
Database *maindb.Database
}
type Operator struct {
log *logger.Logger
db *maindb.Database
dumpingSem atomic.Bool
restoringSem atomic.Bool
}
func NewOperator(conf *OperatorConfig) (*Operator, error) {
var err error
oper := &Operator{
db: conf.Database,
}
oper.log = logger.NewLogger("Operator")
return oper, err
}
func (oper *Operator) DumpingSemUp() {
oper.dumpingSem.Store(true)
}
func (oper *Operator) DumpingSemDown() {
oper.dumpingSem.Store(false)
}
func (oper *Operator) WaitDumping() {
for {
if !oper.dumpingSem.Load() {
return
}
time.Sleep(1 * time.Millisecond)
}
}
func (oper *Operator) RestoringSemUp() {
oper.restoringSem.Store(true)
}
func (oper *Operator) RestoringSemDown() {
oper.restoringSem.Store(false)
}
func (oper *Operator) WaitRestoring() {
for {
if !oper.restoringSem.Load() {
return
}
time.Sleep(1 * time.Millisecond)
}
}