Browse Source

offline logic design

master
tangmingyou 4 years ago
parent
commit
e4fb4e3314
  1. 25
      cmd/main.go
  2. 9
      data/config.toml
  3. 13
      tool/collect/delay_queue.go

25
cmd/main.go

@ -30,20 +30,37 @@ func main() {
//wait.Add(1)
//
//times := 100
//counter := atomic.Int32{}
//counter.Store(int32(times))
//
//q := collect.NewDelayQueue(func(data int, now time.Time) {
// fmt.Println(data, now)
// if data == times-1 {
//q := collect.NewDelayQueue(func(data func(time.Time), now time.Time) {
// // fmt.Println(data, now)
// data(now)
// counter.Add(-1)
// if int(counter.Load()) <= 0 {
// wait.Done()
// }
//
// if counter.Load() == 62 {
// panic("test error!!!")
// }
//})
//for i := 0; i < times; i++ {
// key := q.Add(time.Second*time.Duration(i), i)
// key := q.Add(time.Second*time.Duration(i), func(idx int) func(t time.Time) {
// return func(t time.Time) {
// fmt.Println("handler:", idx, t)
// }
// }(i))
// if i%5 == 0 {
// go func(k int64, idx int) {
// <-time.After(time.Second * 3)
// q.Cancel(k)
// fmt.Println("cancel", idx, k)
//
// counter.Add(-1)
// if int(counter.Load()) <= 0 {
// wait.Done()
// }
// }(key, i)
// }
//}

9
data/config.toml

@ -23,5 +23,10 @@ dbPath = "data/texas-poker.db"
[game]
# 新用户赠送筹码
GiftChip = 10000
AvatarPath = "data/avatar/"
giftChip = 10000
avatarPath = "data/avatar/"
[game.offline] # 玩家掉线配置
# 在房间中
outRoom = 15

13
tool/collect/delay_queue.go

@ -1,7 +1,9 @@
package collect
import (
"fmt"
"github.com/emirpasic/gods/maps/treemap"
"runtime/debug"
"sync"
"sync/atomic"
"time"
@ -36,7 +38,16 @@ func NewDelayQueue[T any](handler func(data T, now time.Time)) *DelayQueue[T] {
continue
}
for _, data := range values {
q.handler(data, time.Now())
func() {
defer func() {
if err := recover(); err != nil {
fmt.Printf("consumer handler error: %v \n", err)
// 输出堆栈信息
fmt.Println(string(debug.Stack()))
}
}()
q.handler(data, time.Now())
}()
}
}
}()

Loading…
Cancel
Save