framemanager.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package bacframe
  2. import (
  3. "strconv"
  4. "sync"
  5. "bet24.com/log"
  6. )
  7. type frame_manager struct {
  8. lock *sync.RWMutex
  9. frameList map[int]*GameFrame
  10. }
  11. var frameMgr *frame_manager
  12. func getFrameManager() *frame_manager {
  13. if frameMgr == nil {
  14. frameMgr = new(frame_manager)
  15. frameMgr.ctor()
  16. }
  17. return frameMgr
  18. }
  19. func (fm *frame_manager) ctor() {
  20. fm.lock = &sync.RWMutex{}
  21. fm.frameList = make(map[int]*GameFrame)
  22. }
  23. func (fm *frame_manager) getGameFrame(index int) *GameFrame {
  24. fm.lock.RLock()
  25. gf := fm.frameList[index]
  26. fm.lock.RUnlock()
  27. if gf == nil {
  28. log.Debug("frame_manager.getFrame[%d] not found", index)
  29. return nil
  30. }
  31. return gf
  32. }
  33. func (fm *frame_manager) dump(param1, param2 string) {
  34. log.Release("----------frame_manager.dump %s.%s ----------", param1, param2)
  35. defer func() {
  36. log.Release("++++++++++frame_manager.dump++++++++++")
  37. }()
  38. if param1 == "" {
  39. fm.lock.RLock()
  40. log.Release(" frame count:%d", len(fm.frameList))
  41. for k := range fm.frameList {
  42. log.Release(" %d", k)
  43. }
  44. fm.lock.RUnlock()
  45. return
  46. }
  47. tableId, err := strconv.Atoi(param1)
  48. if err != nil {
  49. log.Release(" invalid argument %v", err)
  50. return
  51. }
  52. gf := fm.getGameFrame(tableId)
  53. if gf == nil {
  54. return
  55. }
  56. gf.dump(param2)
  57. }