Add TlepCenter for cgui

This commit is contained in:
qowevisa 2024-06-12 21:12:30 +03:00
parent 3e25b2c72c
commit 17f63673a7

64
cmd/cgui/tleps.go Normal file
View File

@ -0,0 +1,64 @@
package main
import (
"errors"
"log"
"sync"
"git.qowevisa.me/Qowevisa/gotell/gmyerr"
"git.qowevisa.me/Qowevisa/gotell/tlep"
)
var (
tlepCenter TlepCenter
)
type TlepCenter struct {
TLEPs map[uint16]*tlep.TLEP
Mu sync.Mutex
}
func (t *TlepCenter) Init() {
t.TLEPs = make(map[uint16]*tlep.TLEP)
}
var (
ERROR_ALREADY_HAVE = errors.New("Already taken")
ERROR_DONT_HAVE = errors.New("Not found")
)
func (t *TlepCenter) AddUser(id uint16, name string) error {
t.Mu.Lock()
defer t.Mu.Unlock()
_, alreadyHave := t.TLEPs[id]
if alreadyHave {
return ERROR_ALREADY_HAVE
}
val, err := tlep.InitTLEP(name)
if err != nil {
return gmyerr.WrapPrefix("tlep.InitTLEP", err)
}
t.TLEPs[id] = val
log.Printf("TLEPs: add %p for %d id\n", val, id)
return nil
}
func (t *TlepCenter) DeleteIfHaveOne(id uint16) {
t.Mu.Lock()
defer t.Mu.Unlock()
val, found := t.TLEPs[id]
if !found {
log.Printf("TLEP with %d id is not found; Can not delete\n", id)
return
}
delete(t.TLEPs, id)
log.Printf("TLEP with %v val and %d id was found; TLEP is deleted\n", val, id)
}
func (t *TlepCenter) GetTLEP(id uint16) (*tlep.TLEP, error) {
name, have := t.TLEPs[id]
if !have {
return nil, ERROR_DONT_HAVE
}
return name, nil
}