Documentation ¶
Index ¶
- Variables
- type Client
- func (c *Client) Close() (err error)
- func (c *Client) Create(opt *WriteOption, path string, data []byte) error
- func (c *Client) Delete(opt *WriteOption, path string) error
- func (c *Client) Read(opt *ReadOption, path string, w *Watcher) (*node.Node, error)
- func (c *Client) Sid() (uint64, error)
- func (c *Client) Unregister() error
- func (c *Client) Write(opt *WriteOption, path string, data []byte) error
- type Options
- type ReadOption
- type Watcher
- type WriteOption
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrClosed = errors.New("use of closed client") ErrConnecting = errors.New("client is connecting") ErrNotFound = errors.New("node not found") ErrNotLeader = errors.New("not leader") ErrSessionExpired = errors.New("session expired") ErrInvalidArgument = errors.New("invalid argument") ErrAgain = errors.New("try again") ErrExists = errors.New("node exists") ErrInternal = errors.New("internal error") ErrUnknown = errors.New("unknown error") )
View Source
var Log = log15.New()
Log 设置日志输出对象
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct { DefaultWatcher *Watcher // contains filtered or unexported fields }
Client 代表了一个资源定位的客户端,Client会自动从服务端列表里面找到Leader进行连接 Client连接成功后会定时发心跳 网络出问题后会自动重连
Example ¶
//pyixs服务端地址列表 var addrs = []string{"127.0.0.1:7001", "127.0.0.1:7002", "127.0.0.1:7003"} w := &Watcher{ Recursive: true, //是否监听子孙节点的事件 Done: make(chan *watch.Event, 1), } var opt = &Options{ DefaultWatcher: w, SessionTimeout: 5 * time.Second, } cli := NewClient(addrs, opt) defer cli.Close() //第一个参数设置创建的节点的类型,创建test节点并写入数据 err := cli.Create(nil, "/test", []byte("createTest")) if err != nil { log.Fatalf("create path error:%s", err) } //读取/test节点,读取Data域 n, err := cli.Read(nil, "/test", w) if err != nil { log.Fatalf("read path error:%s", err) } fmt.Println(n.Data) //Output("createTest") //更新/test节点的数据域 err = cli.Write(nil, "/test", []byte("writeTest")) if err != nil { log.Fatalf("write path error:%s", err) } //删除test节点 err = cli.Delete(nil, "/test") if err != nil { log.Fatalf("delete path error:%s", err) }
Output:
func (*Client) Create ¶
func (c *Client) Create(opt *WriteOption, path string, data []byte) error
Create 创建一个节点,同时有一个可选的初始化数据 如果创建的是临时节点会跟当前的会话挂钩。 Create不会递归创建节点。 opt如果为空则使用默认值
func (*Client) Delete ¶
func (c *Client) Delete(opt *WriteOption, path string) error
Delete 删除给定的节点 opt为空则使用默认值
type Options ¶
type Options struct { // DefaultWatcher为客户端的默认Watcher,当一个事件到达的时候如果没有可用的Watcher就 // 会使用这个来通知事件。同时也会接收超时,连接和断开事件。 DefaultWatcher *Watcher // SessionTimeout设置会话的过期时间,这个时间不能超过服务端设置的最大和最小超时时间 // 默认为5秒 SessionTimeout time.Duration // 如果Sid不等于0,则设置了默认的连接会话id,这个sid代表的会话可能已经过期 Sid uint64 }
Options 定义了Client的连接参数
type Watcher ¶
type Watcher struct { // Recursive如果为true代表递归监听这个节点及子节点的事件 Recursive bool // Filter为事件的集合,代表了只监听这些事件 Filter watch.EventType // Done为接收事件的channel,客户端不会阻塞等待发送数据,意味着如果channel // 没有在接收状态,这个消息就丢了 Done chan *watch.Event // User为用户自定义的数据,在watch.Event里面会附带上 User interface{} }
Watcher 代表了对某个节点的监听
type WriteOption ¶
type WriteOption struct { // for Create IsEphemeral bool }
WriteOption 为写入操作的一些配置
Click to show internal directories.
Click to hide internal directories.