3 Star 2 Fork 1

vrv_media/go-micro-framework

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
watcher.go 726 Bytes
一键复制 编辑 原始数据 按行查看 历史
bujinyuan 提交于 2025-03-11 09:17 +08:00 . feat:修改
package consul
import (
"context"
"gitee.com/vrv_media/go-micro-framework/registry"
)
type watcher struct {
event chan struct{}
set *serviceSet
// for cancel
ctx context.Context
cancel context.CancelFunc
}
func (w *watcher) Next() (services []*registry.ServiceInstance, err error) {
select {
case <-w.ctx.Done():
err = w.ctx.Err()
case <-w.event: // w.event 是否存在值 不存在 hold 住
}
ss, ok := w.set.services.Load().([]*registry.ServiceInstance) // 原子性读 操作 读取 服务端相关信息
if ok {
services = append(services, ss...)
}
return
}
func (w *watcher) Stop() error {
w.cancel()
w.set.lock.Lock()
defer w.set.lock.Unlock()
delete(w.set.watcher, w)
return nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/vrv_media/go-micro-framework.git
git@gitee.com:vrv_media/go-micro-framework.git
vrv_media
go-micro-framework
go-micro-framework
4d2a37d3a8d1

搜索帮助