github.com/zly-app/zapp@v1.3.3/core/config.watch.go (about)

     1  package core
     2  
     3  // 配置观察选项
     4  type ConfigWatchOption func(opts interface{})
     5  
     6  // 配置观察key对象
     7  type IConfigWatchKeyObject interface {
     8  	// 获取组名
     9  	GroupName() string
    10  	// 获取key名
    11  	KeyName() string
    12  	// 添加回调, 即使没有发生变更, 启动时会立即触发一次回调
    13  	AddCallback(callback ...ConfigWatchKeyCallback)
    14  	// 获取原始数据的副本
    15  	GetData() []byte
    16  	// 检查是否复合预期的值
    17  	Expect(v interface{}) bool
    18  	// 获取字符串
    19  	GetString() string
    20  	GetBool(def ...bool) bool
    21  	GetInt(def ...int) int
    22  	GetInt8(def ...int8) int8
    23  	GetInt16(def ...int16) int16
    24  	GetInt32(def ...int32) int32
    25  	GetInt64(def ...int64) int64
    26  	GetUint(def ...uint) uint
    27  	GetUint8(def ...uint8) uint8
    28  	GetUint16(def ...uint16) uint16
    29  	GetUint32(def ...uint32) uint32
    30  	GetUint64(def ...uint64) uint64
    31  	GetFloat32(def ...float32) float32
    32  	GetFloat64(def ...float64) float64
    33  
    34  	/*解析为json
    35  	  outPtr 用于接收数据的指针
    36  	*/
    37  	ParseJSON(outPtr interface{}) error
    38  	/*解析为yaml
    39  	  outPtr 用于接收数据的指针
    40  	*/
    41  	ParseYaml(outPtr interface{}) error
    42  }
    43  
    44  // 配置观察key对象回调, 如果是第一次触发, isFirst 为 true
    45  type ConfigWatchKeyCallback func(isFirst bool, oldData, newData []byte)
    46  
    47  // 配置观察key对象, 用于结构化
    48  type IConfigWatchKeyStruct[T any] interface {
    49  	// 获取组名
    50  	GroupName() string
    51  	// 获取key名
    52  	KeyName() string
    53  	// 添加回调, 即使没有发生变更, 启动时也会触发一次回调
    54  	AddCallback(callback ...ConfigWatchKeyStructCallback[T])
    55  	// 获取原始数据的副本
    56  	GetData() []byte
    57  	// 获取结构
    58  	Get() T
    59  }
    60  
    61  // 配置观察key对象回调, 如果是第一次触发, isFirst 为 true
    62  type ConfigWatchKeyStructCallback[T any] func(isFirst bool, oldData, newData T)
    63  
    64  // 配置观察提供者
    65  type IConfigWatchProvider interface {
    66  	// 获取数据
    67  	Get(groupName, keyName string) ([]byte, error)
    68  	// 监听, 注意, 这个方法不能一直阻塞, 应该尽早的返回, 而通过协程开始watch
    69  	Watch(groupName, keyName string, callback ConfigWatchProviderCallback) error
    70  }
    71  
    72  // 配置观察提供者回调
    73  type ConfigWatchProviderCallback func(groupName, keyName string, oldData, newData []byte)