server.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package server
  2. import (
  3. "bet24.com/log"
  4. "bet24.com/servers/micros/common"
  5. "bet24.com/servers/micros/privateroom/status/client"
  6. "context"
  7. "github.com/smallnest/rpcx/server"
  8. )
  9. func Run(addr, consulAddr string,
  10. iServerReceiver client.IPrivateServerStatusReceiver,
  11. iStatusReceiver client.IPrivateRoomStatusReceiver) {
  12. s := newHandler(iServerReceiver, iStatusReceiver, addr)
  13. rpcserver := common.RunWithoutChangeTitle(addr, s, consulAddr)
  14. s.rpcserver = rpcserver
  15. }
  16. func newHandler(iServerReceiver client.IPrivateServerStatusReceiver,
  17. iStatusReceiver client.IPrivateRoomStatusReceiver, addr string) *SubscribeServer {
  18. ret := new(SubscribeServer)
  19. ret.iServerReceiver = iServerReceiver
  20. ret.iStatusReceiver = iStatusReceiver
  21. ret._addr = addr
  22. return ret
  23. }
  24. type SubscribeServer struct {
  25. _addr string
  26. rpcserver *server.Server
  27. iServerReceiver client.IPrivateServerStatusReceiver
  28. iStatusReceiver client.IPrivateRoomStatusReceiver
  29. }
  30. func (s *SubscribeServer) OnGameRuleRegistered(ctx context.Context, ss *client.ServerStatus, reply *client.Reply) error {
  31. if s.iServerReceiver == nil {
  32. return nil
  33. }
  34. s.iServerReceiver.OnGameRuleRegistered(ss.GameId, ss.GameRule, ss.Desc, ss.TargetOptions, ss.UserOptions, ss.PlayTimeOptions)
  35. return nil
  36. }
  37. func (s *SubscribeServer) OnGameRuleDeregistered(ctx context.Context, ss *client.ServerStatus, reply *client.Reply) error {
  38. if s.iServerReceiver == nil {
  39. return nil
  40. }
  41. s.iServerReceiver.OnGameRuleDeregistered(ss.GameId, ss.GameRule)
  42. return nil
  43. }
  44. func (s *SubscribeServer) OnRoomStatusInfo(ctx context.Context, rs *client.RoomStatus, reply *client.Reply) error {
  45. receiver := s.iStatusReceiver
  46. if receiver == nil {
  47. return nil
  48. }
  49. switch rs.Method {
  50. case client.Roomstatus_start:
  51. receiver.OnRoomStart(rs.RoomNo)
  52. case client.Roomstatus_end:
  53. receiver.OnRoomEnd(rs.RoomNo, rs.Winners)
  54. case client.Roomstatus_scorechanged:
  55. receiver.OnRoomUserScoreChanged(rs.RoomNo, rs.UserId, rs.Score)
  56. case client.Roomstatus_statuschanged:
  57. receiver.OnRoomStatusChanged(rs.RoomNo, rs.OldStatus, rs.NewStatus)
  58. default:
  59. log.Release("OnRoomStatusInfo method:%s not found", rs.Method)
  60. }
  61. return nil
  62. }
  63. /*func (s *SubscribeServer) CloseStatusServer(ctx context.Context, ss *client.ServerStatus, reply *client.Reply) error {
  64. if s.rpcserver != nil {
  65. log.Release("CloseStatusServer %s", s._addr)
  66. s.rpcserver.Shutdown(ctx)
  67. }
  68. return nil
  69. }*/