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)