| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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)
- }
|