mhaya.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package mhaya
  2. import (
  3. cfacade "github.com/mhaya/facade"
  4. ccluster "github.com/mhaya/net/cluster"
  5. cdiscovery "github.com/mhaya/net/discovery"
  6. )
  7. type (
  8. AppBuilder struct {
  9. *Application
  10. components []cfacade.IComponent
  11. }
  12. )
  13. func Configure(profileFilePath, nodeId string, isFrontend bool, mode NodeMode) *AppBuilder {
  14. appBuilder := &AppBuilder{
  15. Application: NewApp(profileFilePath, nodeId, isFrontend, mode),
  16. components: make([]cfacade.IComponent, 0),
  17. }
  18. return appBuilder
  19. }
  20. func ConfigureNode(node cfacade.INode, isFrontend bool, mode NodeMode) *AppBuilder {
  21. appBuilder := &AppBuilder{
  22. Application: NewAppNode(node, isFrontend, mode),
  23. components: make([]cfacade.IComponent, 0),
  24. }
  25. return appBuilder
  26. }
  27. func (p *AppBuilder) Startup() {
  28. app := p.Application
  29. if app.NodeMode() == Cluster {
  30. cluster := ccluster.New()
  31. app.SetCluster(cluster)
  32. app.Register(cluster)
  33. discovery := cdiscovery.New()
  34. app.SetDiscovery(discovery)
  35. app.Register(discovery)
  36. }
  37. // Register custom components
  38. app.Register(p.components...)
  39. // startup
  40. app.Startup()
  41. }
  42. func (p *AppBuilder) Register(component ...cfacade.IComponent) {
  43. p.components = append(p.components, component...)
  44. }
  45. func (p *AppBuilder) AddActors(actors ...cfacade.IActorHandler) {
  46. p.actorSystem.Add(actors...)
  47. }
  48. func (p *AppBuilder) NetParser() cfacade.INetParser {
  49. return p.netParser
  50. }
  51. func (p *AppBuilder) SetNetParser(parser cfacade.INetParser) {
  52. p.netParser = parser
  53. }