application.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package application
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/core/api"
  4. "git.sxidc.com/go-framework/baize/framework/core/infrastructure"
  5. )
  6. type App struct {
  7. // api实例
  8. apiInstance *api.Api
  9. // 基础设施实例
  10. infrastructureInstance *infrastructure.Infrastructure
  11. }
  12. // New 创建Application
  13. func New(api *api.Api, i *infrastructure.Infrastructure) *App {
  14. return &App{
  15. apiInstance: api,
  16. infrastructureInstance: i,
  17. }
  18. }
  19. // Start 运行应用
  20. // 参数: 无
  21. // 返回值:
  22. // - 错误
  23. func (app *App) Start() error {
  24. err := app.apiInstance.Start()
  25. if err != nil {
  26. return err
  27. }
  28. return nil
  29. }
  30. // Finish 终止应用
  31. // 参数: 无
  32. // 返回值:
  33. // - 错误
  34. func (app *App) Finish() error {
  35. err := app.apiInstance.Finish()
  36. if err != nil {
  37. return err
  38. }
  39. return nil
  40. }
  41. // Api 获取Api实例
  42. // 参数: 无
  43. // 返回值:
  44. // - Api实例
  45. func (app *App) Api() *api.Api {
  46. return app.apiInstance
  47. }
  48. // Infrastructure 获取Infrastructure实例
  49. // 参数: 无
  50. // 返回值:
  51. // - Infrastructure实例
  52. func (app *App) Infrastructure() *infrastructure.Infrastructure {
  53. return app.infrastructureInstance
  54. }
  55. // ChooseRouter 选择Router
  56. // 参数:
  57. // - routerType: 路由类型,有两种
  58. // - api.RouterRoot: 根路由
  59. // - api.RouterPrefix: 带url前缀的路由
  60. //
  61. // - version: 版本,用于获取基于上面两中路由够造的带有版本号的路由,传空字符串则选定上面两种路由本身
  62. // 返回值:
  63. // - 选择的Router
  64. func (app *App) ChooseRouter(routerType string, version string) api.Router {
  65. return app.Api().ChooseRouter(routerType, version)
  66. }