123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- package zk
- import (
- "errors"
- )
- const (
- protocolVersion = 0
- DefaultPort = 2181
- )
- const (
- opNotify = 0
- opCreate = 1
- opDelete = 2
- opExists = 3
- opGetData = 4
- opSetData = 5
- opGetAcl = 6
- opSetAcl = 7
- opGetChildren = 8
- opSync = 9
- opPing = 11
- opGetChildren2 = 12
- opCheck = 13
- opMulti = 14
- opClose = -11
- opSetAuth = 100
- opSetWatches = 101
- opError = -1
- // Not in protocol, used internally
- opWatcherEvent = -2
- )
- const (
- EventNodeCreated EventType = 1
- EventNodeDeleted EventType = 2
- EventNodeDataChanged EventType = 3
- EventNodeChildrenChanged EventType = 4
- EventSession EventType = -1
- EventNotWatching EventType = -2
- )
- var (
- eventNames = map[EventType]string{
- EventNodeCreated: "EventNodeCreated",
- EventNodeDeleted: "EventNodeDeleted",
- EventNodeDataChanged: "EventNodeDataChanged",
- EventNodeChildrenChanged: "EventNodeChildrenChanged",
- EventSession: "EventSession",
- EventNotWatching: "EventNotWatching",
- }
- )
- const (
- StateUnknown State = -1
- StateDisconnected State = 0
- StateConnecting State = 1
- StateAuthFailed State = 4
- StateConnectedReadOnly State = 5
- StateSaslAuthenticated State = 6
- StateExpired State = -112
- StateConnected = State(100)
- StateHasSession = State(101)
- )
- const (
- FlagEphemeral = 1
- FlagSequence = 2
- )
- var (
- stateNames = map[State]string{
- StateUnknown: "StateUnknown",
- StateDisconnected: "StateDisconnected",
- StateConnectedReadOnly: "StateConnectedReadOnly",
- StateSaslAuthenticated: "StateSaslAuthenticated",
- StateExpired: "StateExpired",
- StateAuthFailed: "StateAuthFailed",
- StateConnecting: "StateConnecting",
- StateConnected: "StateConnected",
- StateHasSession: "StateHasSession",
- }
- )
- type State int32
- func (s State) String() string {
- if name := stateNames[s]; name != "" {
- return name
- }
- return "Unknown"
- }
- type ErrCode int32
- var (
- ErrConnectionClosed = errors.New("zk: connection closed")
- ErrUnknown = errors.New("zk: unknown error")
- ErrAPIError = errors.New("zk: api error")
- ErrNoNode = errors.New("zk: node does not exist")
- ErrNoAuth = errors.New("zk: not authenticated")
- ErrBadVersion = errors.New("zk: version conflict")
- ErrNoChildrenForEphemerals = errors.New("zk: ephemeral nodes may not have children")
- ErrNodeExists = errors.New("zk: node already exists")
- ErrNotEmpty = errors.New("zk: node has children")
- ErrSessionExpired = errors.New("zk: session has been expired by the server")
- ErrInvalidACL = errors.New("zk: invalid ACL specified")
- ErrAuthFailed = errors.New("zk: client authentication failed")
- ErrClosing = errors.New("zk: zookeeper is closing")
- ErrNothing = errors.New("zk: no server responsees to process")
- ErrSessionMoved = errors.New("zk: session moved to another server, so operation is ignored")
- // ErrInvalidCallback = errors.New("zk: invalid callback specified")
- errCodeToError = map[ErrCode]error{
- 0: nil,
- errAPIError: ErrAPIError,
- errNoNode: ErrNoNode,
- errNoAuth: ErrNoAuth,
- errBadVersion: ErrBadVersion,
- errNoChildrenForEphemerals: ErrNoChildrenForEphemerals,
- errNodeExists: ErrNodeExists,
- errNotEmpty: ErrNotEmpty,
- errSessionExpired: ErrSessionExpired,
- // errInvalidCallback: ErrInvalidCallback,
- errInvalidAcl: ErrInvalidACL,
- errAuthFailed: ErrAuthFailed,
- errClosing: ErrClosing,
- errNothing: ErrNothing,
- errSessionMoved: ErrSessionMoved,
- }
- )
- func (e ErrCode) toError() error {
- if err, ok := errCodeToError[e]; ok {
- return err
- }
- return ErrUnknown
- }
- const (
- errOk = 0
- // System and server-side errors
- errSystemError = -1
- errRuntimeInconsistency = -2
- errDataInconsistency = -3
- errConnectionLoss = -4
- errMarshallingError = -5
- errUnimplemented = -6
- errOperationTimeout = -7
- errBadArguments = -8
- errInvalidState = -9
- // API errors
- errAPIError ErrCode = -100
- errNoNode ErrCode = -101 // *
- errNoAuth ErrCode = -102
- errBadVersion ErrCode = -103 // *
- errNoChildrenForEphemerals ErrCode = -108
- errNodeExists ErrCode = -110 // *
- errNotEmpty ErrCode = -111
- errSessionExpired ErrCode = -112
- errInvalidCallback ErrCode = -113
- errInvalidAcl ErrCode = -114
- errAuthFailed ErrCode = -115
- errClosing ErrCode = -116
- errNothing ErrCode = -117
- errSessionMoved ErrCode = -118
- )
- // Constants for ACL permissions
- const (
- PermRead = 1 << iota
- PermWrite
- PermCreate
- PermDelete
- PermAdmin
- PermAll = 0x1f
- )
- var (
- emptyPassword = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
- opNames = map[int32]string{
- opNotify: "notify",
- opCreate: "create",
- opDelete: "delete",
- opExists: "exists",
- opGetData: "getData",
- opSetData: "setData",
- opGetAcl: "getACL",
- opSetAcl: "setACL",
- opGetChildren: "getChildren",
- opSync: "sync",
- opPing: "ping",
- opGetChildren2: "getChildren2",
- opCheck: "check",
- opMulti: "multi",
- opClose: "close",
- opSetAuth: "setAuth",
- opSetWatches: "setWatches",
- opWatcherEvent: "watcherEvent",
- }
- )
- type EventType int32
- func (t EventType) String() string {
- if name := eventNames[t]; name != "" {
- return name
- }
- return "Unknown"
- }
- // Mode is used to build custom server modes (leader|follower|standalone).
- type Mode uint8
- func (m Mode) String() string {
- if name := modeNames[m]; name != "" {
- return name
- }
- return "unknown"
- }
- const (
- ModeUnknown Mode = iota
- ModeLeader Mode = iota
- ModeFollower Mode = iota
- ModeStandalone Mode = iota
- )
- var (
- modeNames = map[Mode]string{
- ModeLeader: "leader",
- ModeFollower: "follower",
- ModeStandalone: "standalone",
- }
- )
|