1 Star 0 Fork 0

jack/protoactor-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
zk_conn.go 2.34 KB
一键复制 编辑 原始数据 按行查看 历史
490689386@qq.com 提交于 2025-05-19 14:50 +08:00 . 初始化
package zk
import (
"time"
"github.com/go-zookeeper/zk"
)
type zkConn interface {
AddAuth(scheme string, auth []byte) error
Exists(path string) (bool, *zk.Stat, error)
Create(path string, data []byte, flags int32, acl []zk.ACL) (string, error)
Delete(path string, version int32) error
Get(path string) ([]byte, *zk.Stat, error)
Children(path string) ([]string, *zk.Stat, error)
ChildrenW(path string) ([]string, *zk.Stat, <-chan zk.Event, error)
CreateProtectedEphemeralSequential(path string, data []byte, acl []zk.ACL) (string, error)
Close()
}
func connectZk(servers []string, sessionTimeout time.Duration, opts ...zkConnOpt) (zkConn, error) {
opt := newZkOptions(opts...)
var conn *zk.Conn
var err error
if opt.ecb != nil {
conn, _, err = zk.Connect(servers, sessionTimeout, zk.WithEventCallback(opt.ecb))
} else {
conn, _, err = zk.Connect(servers, sessionTimeout)
}
if err != nil {
return nil, err
}
return &zkConnImpl{conn: conn}, nil
}
type zkConnImpl struct {
conn *zk.Conn
}
func (impl *zkConnImpl) AddAuth(scheme string, auth []byte) error {
return impl.conn.AddAuth(scheme, auth)
}
func (impl *zkConnImpl) Exists(path string) (bool, *zk.Stat, error) {
return impl.conn.Exists(path)
}
func (impl *zkConnImpl) Create(path string, data []byte, flags int32, acl []zk.ACL) (string, error) {
return impl.conn.Create(path, data, flags, acl)
}
func (impl *zkConnImpl) Delete(path string, version int32) error {
return impl.conn.Delete(path, version)
}
func (impl *zkConnImpl) Get(path string) ([]byte, *zk.Stat, error) {
return impl.conn.Get(path)
}
func (impl *zkConnImpl) Children(path string) ([]string, *zk.Stat, error) {
return impl.conn.Children(path)
}
func (impl *zkConnImpl) ChildrenW(path string) ([]string, *zk.Stat, <-chan zk.Event, error) {
return impl.conn.ChildrenW(path)
}
func (impl *zkConnImpl) CreateProtectedEphemeralSequential(path string, data []byte, acl []zk.ACL) (string, error) {
return impl.conn.CreateProtectedEphemeralSequential(path, data, acl)
}
func (impl *zkConnImpl) Close() {
impl.conn.Close()
}
type zkoption struct {
ecb zk.EventCallback
}
func newZkOptions(opts ...zkConnOpt) *zkoption {
opt := &zkoption{}
for _, fn := range opts {
fn(opt)
}
return opt
}
type zkConnOpt func(*zkoption)
func WithEventCallback(cb zk.EventCallback) zkConnOpt {
return func(o *zkoption) {
o.ecb = cb
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wujianhai/protoactor-go.git
git@gitee.com:wujianhai/protoactor-go.git
wujianhai
protoactor-go
protoactor-go
5633fe2499dd

搜索帮助