main_handler.go 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. package handler
  2. import (
  3. _ "bet24.com/log"
  4. pb "bet24.com/servers/micros/privateroom/proto"
  5. "context"
  6. "encoding/json"
  7. "fmt"
  8. )
  9. var instance *PrivateRoomService
  10. func GetInstance() *PrivateRoomService {
  11. if instance == nil {
  12. instance = newHandler()
  13. }
  14. return instance
  15. }
  16. func Dump(cmd, param1, param2 string) {
  17. GetInstance().dump(cmd, param1, param2)
  18. }
  19. func newHandler() *PrivateRoomService {
  20. ret := new(PrivateRoomService)
  21. ret.ctor()
  22. return ret
  23. }
  24. type PrivateRoomService struct{}
  25. func (h *PrivateRoomService) ctor() {
  26. getRoomManager().run()
  27. getServerManager().run()
  28. getHistoryManager().run()
  29. }
  30. func (d *PrivateRoomService) dump(cmd, param1, param2 string) {
  31. //log.Debug("DbEngine.Dump %s,%s,%s", cmd, param1, param2)
  32. switch cmd {
  33. case "server":
  34. getServerManager().dump(param1)
  35. return
  36. case "history":
  37. getHistoryManager().dump(param1)
  38. return
  39. case "flush":
  40. getHistoryManager().forceFlush()
  41. getRoomManager().flush()
  42. default:
  43. getRoomManager().dump(param1)
  44. }
  45. }
  46. func (h *PrivateRoomService) SayHello(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  47. rsp.Data = fmt.Sprintf("Hello from %s:%s", pb.ServiceName, req.Name)
  48. return nil
  49. }
  50. func (h *PrivateRoomService) CreatePrivateRoomByGameServer(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  51. rsp.RoomNo, rsp.ErrorMsg = getRoomManager().addRoom(req.UserId, req.GameId, req.GameName, req.Addr, req.TableId)
  52. return nil
  53. }
  54. func (h *PrivateRoomService) GetPrivateRoomInfo(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  55. ri := getRoomManager().getRoomInfo(req.RoomNo)
  56. if ri == nil {
  57. return nil
  58. }
  59. d, _ := json.Marshal(ri)
  60. rsp.Data = string(d)
  61. return nil
  62. }
  63. func (h *PrivateRoomService) GetUserRooms(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  64. rsp.Data = getRoomManager().getUserRooms(req.UserId)
  65. return nil
  66. }
  67. func (h *PrivateRoomService) SetRoomStatus(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  68. getRoomManager().setRoomStatus(req.RoomNo, req.Status)
  69. return nil
  70. }
  71. func (h *PrivateRoomService) GetRoomStatus(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  72. rsp.Status = getRoomManager().getRoomStatus(req.RoomNo)
  73. return nil
  74. }
  75. func (h *PrivateRoomService) RegisterGameRule(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  76. getServerManager().addGameRule(req.Addr, req.GameId, req.GameName, req.RuleName, req.RuleDesc, req.RuleData)
  77. return nil
  78. }
  79. func (h *PrivateRoomService) UpdateServerOnline(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  80. getServerManager().updateServerOnline(req.Addr, req.Online)
  81. return nil
  82. }
  83. func (h *PrivateRoomService) UnregisterServer(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  84. getServerManager().removeServer(req.Addr, false)
  85. return nil
  86. }
  87. func (h *PrivateRoomService) GetPrivateRoomRules(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  88. rsp.Data = getServerManager().getRules(req.GameId)
  89. return nil
  90. }
  91. func (h *PrivateRoomService) CreatePrivateRoomByUser(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  92. rsp.RoomNo, rsp.ErrorMsg = getServerManager().createRoom(req.UserId, req.GameId, req.RuleName, req.Target,
  93. req.UserCount, req.Fee, req.Prize, req.RoomType, req.PlayTimeout, req.IsPublic, req.ExtraInfo,req.YyfUid)
  94. return nil
  95. }
  96. func (h *PrivateRoomService) ClosePrivateRoom(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  97. rsp.Success = getRoomManager().closeRoom(req.RoomNo, "Creator close")
  98. return nil
  99. }
  100. func (h *PrivateRoomService) DismissPrivatRoom(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  101. rsp.Success = getRoomManager().closeRoom(req.RoomNo, "Player dismiss")
  102. return nil
  103. }
  104. func (h *PrivateRoomService) UserRequestSit(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  105. rsp.Data = getRoomManager().userRequestSit(req.RoomNo, req.UserId, req.NickName, req.FaceId, req.FaceUrl, req.ChairId,
  106. req.Score, req.BaseScore, req.SetCount,req.YyfUid)
  107. return nil
  108. }
  109. func (h *PrivateRoomService) UserSit(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  110. rsp.RetCode = getRoomManager().userSit(req.RoomNo, req.UserId, req.ChairId)
  111. return nil
  112. }
  113. func (h *PrivateRoomService) UserChangeChair(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  114. rsp.Success = getRoomManager().changeChair(req.RoomNo, req.UserId, req.ChairId)
  115. return nil
  116. }
  117. func (h *PrivateRoomService) UserLeave(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  118. rsp.Success = getRoomManager().userLeave(req.RoomNo, req.UserId)
  119. return nil
  120. }
  121. func (h *PrivateRoomService) UpdateUserGameScore(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  122. getRoomManager().updateUserScore(req.RoomNo, req.UserId, req.Score)
  123. return nil
  124. }
  125. func (h *PrivateRoomService) SetWinners(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  126. getRoomManager().setWinners(req.RoomNo, req.Winners)
  127. return nil
  128. }
  129. func (h *PrivateRoomService) GetHistory(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  130. rsp.Data = getHistoryManager().getHistory(req.UserId)
  131. return nil
  132. }
  133. func (h *PrivateRoomService) GetPlayingRoomNo(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  134. rsp.Data = getRoomManager().getPlayingRoomNo(req.UserId)
  135. return nil
  136. }
  137. func (h *PrivateRoomService) IsGameRuleValid(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  138. rsp.Success = getServerManager().isGameRuleValid(req.GameId, req.RuleName, req.Target, req.TableUserCount, req.PlayTimeout)
  139. return nil
  140. }
  141. func (h *PrivateRoomService) ForceUserEnter(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  142. getRoomManager().forceUserEnter(req.UserId, req.RoomNo, req.ChairId, req.SecAfter)
  143. return nil
  144. }
  145. func (h *PrivateRoomService) GetPrivateRoomsByGameId(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  146. rsp.Data = getRoomManager().getRoomsByGameId(req.GameId, req.UserId)
  147. return nil
  148. }
  149. /*func (h *PrivateRoomService) RegisterRoomStatus(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  150. getRoomManager().registerRoomStatus(req.Addr, req.RoomNo)
  151. return nil
  152. }*/
  153. func (h *PrivateRoomService) RegisterServerStatus(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  154. getServerManager().registerServerStatus(req.Addr)
  155. getRoomManager().registerRoomStatus(req.Addr)
  156. return nil
  157. }
  158. func (h *PrivateRoomService) UserSubscribeRoomStatus(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  159. getSubsManager().userSubscribeRoomStatus(req.UserId)
  160. return nil
  161. }
  162. func (h *PrivateRoomService) UserDesubscribeRoomStatus(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  163. getSubsManager().userDesubscribeRoomStatus(req.UserId)
  164. return nil
  165. }
  166. func (h *PrivateRoomService) GetCallList(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  167. d, _ := json.Marshal(getCallManager().getRoomCallList())
  168. rsp.Data = string(d)
  169. return nil
  170. }
  171. func (h *PrivateRoomService) PrivateRoomCall(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  172. getCallManager().addRoomCall(req.UserId, req.RoomNo)
  173. return nil
  174. }
  175. func (h *PrivateRoomService) GetUserRoomInfo(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  176. rsp.User = getRoomManager().getUserRoomInfo(req.UserId, req.RoomNo)
  177. return nil
  178. }
  179. func (h *PrivateRoomService) GetRoomType(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  180. ri := getRoomManager().getRoomInfo(req.RoomNo)
  181. if ri != nil {
  182. rsp.Data = ri.RoomType
  183. }
  184. return nil
  185. }
  186. func (h *PrivateRoomService) GetUserFeeAndPrize(ctx context.Context, req *pb.Request, rsp *pb.Response) error {
  187. ri := getRoomManager().getRoomInfo(req.RoomNo)
  188. if ri != nil {
  189. rsp.Fee = ri.Fee
  190. rsp.Prize = ri.getPrize(req.UserId)
  191. }
  192. return nil
  193. }