app_actor.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package actors
  2. import (
  3. "github.com/gogf/gf/util/guid"
  4. "sparrow/pkg/actor"
  5. "sparrow/pkg/protocol"
  6. "sparrow/pkg/server"
  7. )
  8. // AppActor 服务级actor
  9. type AppActor struct {
  10. actor.ContextBasedCreator
  11. }
  12. func (a *AppActor) CreateActorId() string {
  13. panic("implement me")
  14. }
  15. func (a *AppActor) CreateActor() actor.Actor {
  16. panic("implement me")
  17. }
  18. func (a *AppActor) GetActorRef() actor.Ref {
  19. return a.Ctx
  20. }
  21. func (a *AppActor) Init(ctx actor.Ctx) error {
  22. a.Ctx = ctx
  23. return nil
  24. }
  25. func (a *AppActor) Process(msg protocol.ActorMsg) error {
  26. switch msg.GetMessageType() {
  27. case protocol.APP_INIT_MSG:
  28. server.Log.Debugf("收到应用初始化消息")
  29. default:
  30. server.Log.Debugf("未知的消息类型:%s", msg.GetMessageType())
  31. }
  32. return nil
  33. }
  34. func (a *AppActor) Destroy() error {
  35. return nil
  36. }
  37. func (a *AppActor) OnProcessFailure(err error) *actor.ProcessFailureStrategy {
  38. if err != nil {
  39. return actor.Stop()
  40. } else {
  41. return actor.Resume()
  42. }
  43. }
  44. // AppActorCreator app actor creator implements creator interface
  45. type AppActorCreator struct {
  46. actor.ContextBasedCreator
  47. }
  48. func NewAppActorCreator(systemCtx *actor.SystemContext) *AppActorCreator {
  49. ins := new(AppActorCreator)
  50. ins.SystemCtx = systemCtx
  51. return ins
  52. }
  53. func (a *AppActorCreator) CreateActorId() string {
  54. return guid.S()
  55. }
  56. func (a *AppActorCreator) CreateActor() actor.Actor {
  57. appC := new(AppActor)
  58. appC.SystemCtx = a.SystemCtx
  59. return appC
  60. }