package controller import ( actorRemote "f1-game/internal/actor_remote" nameKey "f1-game/internal/name/key" "fmt" "sync" ctime "github.com/cherry-game/cherry/extend/time" cgin "github.com/cherry-game/components/gin" ) type centerController struct { cgin.BaseController } func (p *centerController) Init() { p.GET("/center/ping", p.ping) } func (p *centerController) ping(c *cgin.Context) { num := c.GetInt(nameKey.Num, 1) if num < 1 || num > 10000 { num = 1 } wg := &sync.WaitGroup{} start := ctime.Now() for i := 0; i < num; i++ { wg.Add(1) go func() { if actorRemote.CenterOps.Ping() { wg.Done() } }() } wg.Wait() diffNanosecond := ctime.Now().ToNanosecond() - start.ToNanosecond() t := struct { Num int `json:"num"` Elapsed string `json:"elapsedTime"` }{ Num: num, Elapsed: fmt.Sprintf("%d Nanosecond", diffNanosecond), } c.RenderJSON(&t) }