app

package
v0.94.1 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package app 提供了简便的方式管理 web.Server 的运行

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Restart

func Restart[T any](c chan T, a App)

Restart 根据信号 c 重启 a

可以结合其它方法一起使用,比如和 fsnotify 一起使用:

watcher := fsnotify.NewWatcher(...)
Restart(watcher.Event, s)

也可参考 SignalHUP

func SignalHUP

func SignalHUP(a App)

SignalHUP 让 a 根据 HUP 信号重启服务

app := &App{...}
SignalHUP(app)

Types

type App

type App interface {
	// Exec 运行当前程序
	Exec() error

	// Restart 重启
	//
	// 中止旧的 [web.Server],再启动一个新的 [web.Server] 对象。
	//
	// NOTE: 如果执行过程中出错,应该尽量阻止旧对象被中止,保证最大限度地可用状态。
	Restart()
}

App web.Server 的管理接口

func New added in v0.92.0

func New(shutdown time.Duration, newServer func() (web.Server, error)) App

New 声明一个简要的 App 实现

shutdown 每次关闭服务操作的等待时间; newServer 构建新服务的方法。

func NewCLI added in v0.92.0

func NewCLI[T comparable](o *CLIOptions[T]) App

NewCLI 提供一种简单的命令行生成方式

生成的命令行带以下几个参数:

  • -v 显示版本号;
  • -h 显示帮助信息;
  • -a 执行的指令,该值会传递给 [CLIOptions.NewServer],由用户根据此值决定初始化方式;

T 表示的是配置文件中的用户自定义数据类型,可参考 config.Load 中有关 User 的说明。

如果是 CLIOptions 本身字段设置有问题会直接 panic。

type CLIOptions added in v0.92.0

type CLIOptions[T any] struct {
	Name    string // 程序名称
	Version string // 程序版本

	// 初始化 [web.Server]
	//
	// name, version 即为 [CLIOptions.Name] 和 [CLIOptions.Version];
	// o 和 user 为从配置文件加载的数据信息;
	// action 为 -a 命令行指定的参数;
	NewServer func(name, version string, o *server.Options, user T, action string) (web.Server, error)

	// 以服务运行的指令
	ServeActions []string

	// 命令行输出信息的通道
	//
	// 默认为 [os.Stdout]。
	Out io.Writer

	// 配置文件所在的目录
	//
	// 有以下几种前缀用于指定不同的保存目录:
	//  - ~ 表示系统提供的配置文件目录,比如 Linux 的 XDG_CONFIG、Windows 的 AppData 等;
	//  - @ 表示当前程序的主目录;
	//  - ^ 表示绝对路径;
	//  - # 表示工作路径;
	//  - 其它则是直接采用 [config.Dir] 初始化。
	// 如果为空则采用 [server.DefaultConfigDir] 中指定的值。
	//
	// NOTE: 具体说明可参考 [config.BuildDir] 的 dir 参数。
	ConfigDir string

	// 配置文件的文件名
	//
	// 相对于 ConfigDir 的文件名,不能为空。
	//
	// 需要保证序列化方法已经由 [config.RegisterFileSerializer] 注册;
	ConfigFilename string

	// 本地化的打印对象
	//
	// 若为空,则以 config.NewPrinter("*.yaml", locales.Locales) 进行初始化。
	//
	// 若是自定义,至少需要保证以下几个字符串的翻译项,才有效果:
	//  - cmd.show_version
	//  - cmd.action
	//  - cmd.show_help
	//  - can not be empty
	//
	// NOTE: 此设置仅影响命令行的本地化,[web.Server] 的本地化由其自身管理。
	Printer *message.Printer

	// 每次关闭服务操作的等待时间
	ShutdownTimeout time.Duration

	// 在命令行解析出错时的处理方式
	//
	// 默认值为 [flag.ContinueOnError]
	ErrorHandling flag.ErrorHandling
}

Jump to

Keyboard shortcuts

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