XApp

package
v0.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2025 License: MIT Imports: 6 Imported by: 0

README

XApp

Reference Release Report DeepWiki

XApp 提供了应用程序生命周期管理功能,用于控制应用程序的启动、运行和退出过程。

功能特性

  • 应用程序生命周期管理:提供 Awake、Start、Stop 等生命周期函数
  • 优雅的启动和退出:支持启动前环境检查和退出时的资源清理
  • 泛型单例模式:内置 Base[T] 泛型基类,支持在应用的任意位置获取应用实例

使用手册

1. 生命周期

应用程序的生命周期状态转换如下:

stateDiagram-v2
    direction LR
    [*] --> Init: New
    Init --> Check: Run
    Check --> Run: true
    Check --> [*]: false
    Run --> Stop: 退出
    Stop --> [*]: 完成
    Stop --> [*]: 超时

    state Init {
        direction TB
        [*] --> Created
        Created --> Pending
    }
    
    state Check {
        direction TB
        [*] --> Env
        Env --> Dep
        Dep --> [*]
    }
    
    state Run {
        direction TB
        [*] --> Started: Start()
        Started --> Running: 运行中
    }
    
    state Stop {
        direction TB
        [*] --> Save: Stop(wg)
        Save --> Close
        Close --> Clean
    }

    note left of Init: 创建阶段
    note left of Check: 检查阶段
    note right of Run: 运行阶段
    note right of Stop: 清理阶段
1.1 应用启动

应用程序需要实现 IBase 接口或继承 Base[T] 泛型基类:

// 定义应用结构体
type MyApp struct {
    XApp.Base[MyApp] // 内嵌泛型基类
}

// 可选:重写生命周期方法
func (app *MyApp) Awake() bool {
    return true
}

func (app *MyApp) Start() {
    // 启动时的初始化代码
    // tips:要保证不阻塞当前方法
}

func (app *MyApp) Stop(wg *sync.WaitGroup) {
    // 退出时的清理代码
}

// 运行应用
app := XObject.New[MyApp]()
XApp.Run(app)
1.2 应用退出

通过调用 Quit 函数触发应用退出:

XApp.Quit()
2. 单例访问
2.1 获取应用实例

在任意位置通过 Shared 函数获取应用实例:

instance := XApp.Shared[*MyApp]()

常见问题

1. 如何处理多个应用实例?

XApp 设计为单例模式,每个应用类型只能有一个实例。如果需要管理多个实例,建议通过应用内部的组件或服务来实现。

更多问题,请查阅问题反馈

项目信息

Documentation

Overview

XApp 提供了应用程序生命周期管理功能,用于控制应用程序的启动、运行和退出过程。

功能特性

  • 应用程序生命周期管理:提供 Awake、Start、Stop 等生命周期函数
  • 优雅的启动和退出:支持启动前环境检查和退出时的资源清理
  • 泛型单例模式:内置 Base[T] 泛型基类,支持在应用的任意位置获取应用实例

使用手册

1. 生命周期管理

1.1 应用启动

type MyApp struct {
	XApp.Base[MyApp]
}
app := XObject.New[MyApp]()
XApp.Run(app)

1.2 应用退出

XApp.Quit()

2. 单例访问

2.1 获取应用实例

instance := XApp.Shared[*MyApp]()

更多信息请参考模块文档。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Quit

func Quit()

Quit 触发应用程序退出。 此函数可以在任意 goroutine 中安全调用。 多次调用只有第一次会生效。

func Run

func Run(app IBase)

Run 启动并运行应用程序。 app 参数必须是 IBase 接口的实现实例。 此函数会阻塞直到应用程序退出。 应用程序可以通过以下方式退出:

  • 调用 Quit 函数
  • 接收到 SIGTERM 或 SIGINT 信号
  • Awake 返回 false

func Shared

func Shared[T IBase]() T

Shared 返回应用程序的单例实例。 类型参数 T 必须是 IBase 接口的实现类型。 在应用程序启动前调用将返回 nil。

Types

type Base

type Base[T any] struct {
	// contains filtered or unexported fields
}

Base 是一个泛型基类,提供了 IBase 接口的默认实现。 类型参数 T 通常是实现类的类型。

func (*Base[T]) Awake

func (app *Base[T]) Awake() bool

Awake 的默认实现,返回 true 表示初始化检查通过。

func (*Base[T]) Ctor

func (app *Base[T]) Ctor(obj any)

Ctor 是 Base 的构造函数,用于初始化基类。 obj 参数必须是实现了 IBase 接口的实例。

func (*Base[T]) Start

func (app *Base[T]) Start()

Start 的默认实现,无操作。

func (*Base[T]) Stop

func (app *Base[T]) Stop(wait *sync.WaitGroup)

Stop 的默认实现,无操作。

type IBase

type IBase interface {
	// Awake 在应用程序启动前调用,用于进行初始化检查。
	// 返回 false 将导致应用程序终止启动。
	Awake() bool

	// Start 在应用程序启动时调用,用于执行初始化操作。
	Start()

	// Stop 在应用程序退出时调用,用于执行清理操作。
	// wait 参数用于同步等待清理完成。
	Stop(wait *sync.WaitGroup)
}

IBase 定义了应用程序的生命周期接口。 实现此接口的类型可以通过 Run 函数启动并由框架管理其生命周期。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL