pyxis

package module
v0.0.0-...-4e84fbd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2016 License: BSD-3-Clause Imports: 11 Imported by: 0

README

pyxis

-- import "github.com/eLong-INF/go-pyxis"

Usage

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")
)
var Log = log15.New()

Log 设置日志输出对象

type Client
type Client struct {
	DefaultWatcher *Watcher
}

Client 代表了一个资源定位的客户端,Client会自动从服务端列表里面找到Leader进行连接 Client连接成功后会定时发心跳 网络出问题后会自动重连

func NewClient
func NewClient(addrs []string, opt *Options) *Client

NewClient 使用一个服务端的地址列表和配置构造一个客户端对象 Client会自动从addrs里面获取到Leader进行连接

func (*Client) Close
func (c *Client) Close() (err error)

Close 关闭连接,释放资源,同时删除会话,意味着所有的临时节点以及Watcher全部失效

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为空则使用默认值

func (*Client) Read
func (c *Client) Read(opt *ReadOption, path string, w *Watcher) (*node.Node, error)

Read 返回给定节点的数据及属性,同时有一个可选的Watcher来监听节点的变化 opt为空则使用默认值

func (*Client) Sid
func (c *Client) Sid() (uint64, error)

Sid 返回当前客户端的session id

func (*Client) Unregister
func (c *Client) Unregister() error

Unregister 注销当前会话但不关闭连接

func (*Client) Write
func (c *Client) Write(opt *WriteOption, path string, data []byte) error

Write 向给定节点写入数据 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 ReadOption
type ReadOption struct {
	// 是否显示隐藏子节点
	ShowHidden bool
}

ReadOption 为读取操作的一些配置

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 为写入操作的一些配置

Documentation

Index

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 NewClient

func NewClient(addrs []string, opt *Options) *Client

NewClient 使用一个服务端的地址列表和配置构造一个客户端对象 Client会自动从addrs里面获取到Leader进行连接

func (*Client) Close

func (c *Client) Close() (err error)

Close 关闭连接,释放资源,同时删除会话,意味着所有的临时节点以及Watcher全部失效

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为空则使用默认值

func (*Client) Read

func (c *Client) Read(opt *ReadOption, path string, w *Watcher) (*node.Node, error)

Read 返回给定节点的数据及属性,同时有一个可选的Watcher来监听节点的变化 opt为空则使用默认值

func (*Client) Sid

func (c *Client) Sid() (uint64, error)

Sid 返回当前客户端的session id

func (*Client) Unregister

func (c *Client) Unregister() error

Unregister 注销当前会话但不关闭连接

func (*Client) Write

func (c *Client) Write(opt *WriteOption, path string, data []byte) error

Write 向给定节点写入数据 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 ReadOption

type ReadOption struct {
	// 是否显示隐藏子节点
	ShowHidden bool
}

ReadOption 为读取操作的一些配置

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 为写入操作的一些配置

Directories

Path Synopsis
Package pyxis_rpc is a generated protocol buffer package.
Package pyxis_rpc is a generated protocol buffer package.
Package pyxis_store is a generated protocol buffer package.
Package pyxis_store is a generated protocol buffer package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL