zookeeper-3.2.1
|
ZooKeeper functions and definitions. More...
Go to the source code of this file.
Data Structures | |
struct | clientid_t |
client id structure. More... | |
Typedefs | |
typedef struct _zhandle | zhandle_t |
ZooKeeper handle. | |
typedef void(* | watcher_fn )(zhandle_t *zh, int type, int state, const char *path, void *watcherCtx) |
signature of a watch function. | |
typedef void(* | void_completion_t )(int rc, const void *data) |
signature of a completion function for a call that returns void. | |
typedef void(* | stat_completion_t )(int rc, const struct Stat *stat, const void *data) |
signature of a completion function that returns a Stat structure. | |
typedef void(* | data_completion_t )(int rc, const char *value, int value_len, const struct Stat *stat, const void *data) |
signature of a completion function that returns data. | |
typedef void(* | strings_completion_t )(int rc, const struct String_vector *strings, const void *data) |
signature of a completion function that returns a list of strings. | |
typedef void(* | string_completion_t )(int rc, const char *value, const void *data) |
signature of a completion function that returns a list of strings. | |
typedef void(* | acl_completion_t )(int rc, struct ACL_vector *acl, struct Stat *stat, const void *data) |
signature of a completion function that returns an ACL. | |
Enumerations | |
enum | ZOO_ERRORS { ZOK = 0, ZSYSTEMERROR = -1, ZRUNTIMEINCONSISTENCY = -2, ZDATAINCONSISTENCY = -3, ZCONNECTIONLOSS = -4, ZMARSHALLINGERROR = -5, ZUNIMPLEMENTED = -6, ZOPERATIONTIMEOUT = -7, ZBADARGUMENTS = -8, ZINVALIDSTATE = -9, ZAPIERROR = -100, ZNONODE = -101, ZNOAUTH = -102, ZBADVERSION = -103, ZNOCHILDRENFOREPHEMERALS = -108, ZNODEEXISTS = -110, ZNOTEMPTY = -111, ZSESSIONEXPIRED = -112, ZINVALIDCALLBACK = -113, ZINVALIDACL = -114, ZAUTHFAILED = -115, ZCLOSING = -116, ZNOTHING = -117, ZSESSIONMOVED = -118 } |
Debug levels | |
enum | ZooLogLevel { ZOO_LOG_LEVEL_ERROR = 1, ZOO_LOG_LEVEL_WARN = 2, ZOO_LOG_LEVEL_INFO = 3, ZOO_LOG_LEVEL_DEBUG = 4 } |
Functions | |
ZOOAPI zhandle_t * | zookeeper_init (const char *host, watcher_fn fn, int recv_timeout, const clientid_t *clientid, void *context, int flags) |
create a handle to used communicate with zookeeper. | |
ZOOAPI int | zookeeper_close (zhandle_t *zh) |
close the zookeeper handle and free up any resources. | |
ZOOAPI const clientid_t * | zoo_client_id (zhandle_t *zh) |
return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE) | |
ZOOAPI int | zoo_recv_timeout (zhandle_t *zh) |
ZOOAPI const void * | zoo_get_context (zhandle_t *zh) |
ZOOAPI void | zoo_set_context (zhandle_t *zh, void *context) |
ZOOAPI watcher_fn | zoo_set_watcher (zhandle_t *zh, watcher_fn newFn) |
set a watcher function | |
ZOOAPI int | zookeeper_interest (zhandle_t *zh, int *fd, int *interest, struct timeval *tv) |
Returns the events that zookeeper is interested in. | |
ZOOAPI int | zookeeper_process (zhandle_t *zh, int events) |
Notifies zookeeper that an event of interest has happened. | |
ZOOAPI int | zoo_state (zhandle_t *zh) |
get the state of the zookeeper connection. | |
ZOOAPI int | zoo_acreate (zhandle_t *zh, const char *path, const char *value, int valuelen, const struct ACL_vector *acl, int flags, string_completion_t completion, const void *data) |
create a node. | |
ZOOAPI int | zoo_adelete (zhandle_t *zh, const char *path, int version, void_completion_t completion, const void *data) |
delete a node in zookeeper. | |
ZOOAPI int | zoo_aexists (zhandle_t *zh, const char *path, int watch, stat_completion_t completion, const void *data) |
checks the existence of a node in zookeeper. | |
ZOOAPI int | zoo_awexists (zhandle_t *zh, const char *path, watcher_fn watcher, void *watcherCtx, stat_completion_t completion, const void *data) |
checks the existence of a node in zookeeper. | |
ZOOAPI int | zoo_aget (zhandle_t *zh, const char *path, int watch, data_completion_t completion, const void *data) |
gets the data associated with a node. | |
ZOOAPI int | zoo_awget (zhandle_t *zh, const char *path, watcher_fn watcher, void *watcherCtx, data_completion_t completion, const void *data) |
gets the data associated with a node. | |
ZOOAPI int | zoo_aset (zhandle_t *zh, const char *path, const char *buffer, int buflen, int version, stat_completion_t completion, const void *data) |
sets the data associated with a node. | |
ZOOAPI int | zoo_aget_children (zhandle_t *zh, const char *path, int watch, strings_completion_t completion, const void *data) |
lists the children of a node. | |
ZOOAPI int | zoo_awget_children (zhandle_t *zh, const char *path, watcher_fn watcher, void *watcherCtx, strings_completion_t completion, const void *data) |
lists the children of a node. | |
ZOOAPI int | zoo_async (zhandle_t *zh, const char *path, string_completion_t completion, const void *data) |
Flush leader channel. | |
ZOOAPI int | zoo_aget_acl (zhandle_t *zh, const char *path, acl_completion_t completion, const void *data) |
gets the acl associated with a node. | |
ZOOAPI int | zoo_aset_acl (zhandle_t *zh, const char *path, int version, struct ACL_vector *acl, void_completion_t, const void *data) |
sets the acl associated with a node. | |
ZOOAPI const char * | zerror (int c) |
return an error string. | |
ZOOAPI int | zoo_add_auth (zhandle_t *zh, const char *scheme, const char *cert, int certLen, void_completion_t completion, const void *data) |
specify application credentials. | |
ZOOAPI int | is_unrecoverable (zhandle_t *zh) |
checks if the current zookeeper connection state can't be recovered. | |
ZOOAPI void | zoo_set_debug_level (ZooLogLevel logLevel) |
sets the debugging level for the library | |
ZOOAPI void | zoo_set_log_stream (FILE *logStream) |
sets the stream to be used by the library for logging | |
ZOOAPI void | zoo_deterministic_conn_order (int yesOrNo) |
enable/disable quorum endpoint order randomization | |
ZOOAPI int | zoo_create (zhandle_t *zh, const char *path, const char *value, int valuelen, const struct ACL_vector *acl, int flags, char *path_buffer, int path_buffer_len) |
create a node synchronously. | |
ZOOAPI int | zoo_delete (zhandle_t *zh, const char *path, int version) |
delete a node in zookeeper synchronously. | |
ZOOAPI int | zoo_exists (zhandle_t *zh, const char *path, int watch, struct Stat *stat) |
checks the existence of a node in zookeeper synchronously. | |
ZOOAPI int | zoo_wexists (zhandle_t *zh, const char *path, watcher_fn watcher, void *watcherCtx, struct Stat *stat) |
checks the existence of a node in zookeeper synchronously. | |
ZOOAPI int | zoo_get (zhandle_t *zh, const char *path, int watch, char *buffer, int *buffer_len, struct Stat *stat) |
gets the data associated with a node synchronously. | |
ZOOAPI int | zoo_wget (zhandle_t *zh, const char *path, watcher_fn watcher, void *watcherCtx, char *buffer, int *buffer_len, struct Stat *stat) |
gets the data associated with a node synchronously. | |
ZOOAPI int | zoo_set (zhandle_t *zh, const char *path, const char *buffer, int buflen, int version) |
sets the data associated with a node. See zoo_set2 function if you require access to the stat information associated with the znode. | |
ZOOAPI int | zoo_set2 (zhandle_t *zh, const char *path, const char *buffer, int buflen, int version, struct Stat *stat) |
sets the data associated with a node. This function is the same as zoo_set except that it also provides access to stat information associated with the znode. | |
ZOOAPI int | zoo_get_children (zhandle_t *zh, const char *path, int watch, struct String_vector *strings) |
lists the children of a node synchronously. | |
ZOOAPI int | zoo_wget_children (zhandle_t *zh, const char *path, watcher_fn watcher, void *watcherCtx, struct String_vector *strings) |
lists the children of a node synchronously. | |
ZOOAPI int | zoo_get_acl (zhandle_t *zh, const char *path, struct ACL_vector *acl, struct Stat *stat) |
gets the acl associated with a node synchronously. | |
ZOOAPI int | zoo_set_acl (zhandle_t *zh, const char *path, int version, const struct ACL_vector *acl) |
sets the acl associated with a node synchronously. | |
Variables | |
ACL Consts | |
ZOOAPI const int | ZOO_PERM_READ |
ZOOAPI const int | ZOO_PERM_WRITE |
ZOOAPI const int | ZOO_PERM_CREATE |
ZOOAPI const int | ZOO_PERM_DELETE |
ZOOAPI const int | ZOO_PERM_ADMIN |
ZOOAPI const int | ZOO_PERM_ALL |
ZOOAPI struct Id | ZOO_ANYONE_ID_UNSAFE |
ZOOAPI struct Id | ZOO_AUTH_IDS |
ZOOAPI struct ACL_vector | ZOO_OPEN_ACL_UNSAFE |
ZOOAPI struct ACL_vector | ZOO_READ_ACL_UNSAFE |
ZOOAPI struct ACL_vector | ZOO_CREATOR_ALL_ACL |
Interest Consts | |
These constants are used to express interest in an event and to indicate to zookeeper which events have occurred. They can be ORed together to express multiple interests. These flags are used in the interest and event parameters of zookeeper_interest and zookeeper_process. | |
ZOOAPI const int | ZOOKEEPER_WRITE |
ZOOAPI const int | ZOOKEEPER_READ |
Create Flags | |
These flags are used by zoo_create to affect node create. They may be ORed together to combine effects. | |
ZOOAPI const int | ZOO_EPHEMERAL |
ZOOAPI const int | ZOO_SEQUENCE |
State Consts | |
These constants represent the states of a zookeeper connection. They are possible parameters of the watcher callback. | |
ZOOAPI const int | ZOO_EXPIRED_SESSION_STATE |
ZOOAPI const int | ZOO_AUTH_FAILED_STATE |
ZOOAPI const int | ZOO_CONNECTING_STATE |
ZOOAPI const int | ZOO_ASSOCIATING_STATE |
ZOOAPI const int | ZOO_CONNECTED_STATE |
Watch Types | |
These constants indicate the event that caused the watch event. They are possible values of the first parameter of the watcher callback. | |
ZOOAPI const int | ZOO_CREATED_EVENT |
a node has been created. | |
ZOOAPI const int | ZOO_DELETED_EVENT |
a node has been deleted. | |
ZOOAPI const int | ZOO_CHANGED_EVENT |
a node has changed. | |
ZOOAPI const int | ZOO_CHILD_EVENT |
a change as occurred in the list of children. | |
ZOOAPI const int | ZOO_SESSION_EVENT |
a session has been lost. | |
ZOOAPI const int | ZOO_NOTWATCHING_EVENT |
a watch has been removed. |
ZooKeeper functions and definitions.
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
ZooKeeper is a network service that may be backed by a cluster of synchronized servers. The data in the service is represented as a tree of data nodes. Each node has data, children, an ACL, and status information. The data for a node is read and write in its entirety.
ZooKeeper clients can leave watches when they queries the data or children of a node. If a watch is left, that client will be notified of the change. The notification is a one time trigger. Subsequent chances to the node will not trigger a notification unless the client issues a querity with the watch flag set. If the client is ever disconnected from the service, even if the disconnection is temporary, the watches of the client will be removed from the service, so a client must treat a disconnect notification as an implicit trigger of all outstanding watches.
When a node is created, it may be flagged as an ephemeral node. Ephemeral nodes are automatically removed when a client session is closed or when a session times out due to inactivity (the ZooKeeper runtime fills in periods of inactivity with pings). Ephemeral nodes cannot have children.
ZooKeeper clients are identified by a server assigned session id. For security reasons The server also generates a corresponding password for a session. A client may save its id and corresponding password to persistent storage in order to use the session across program invocation boundaries.
typedef void(* acl_completion_t)(int rc, struct ACL_vector *acl, struct Stat *stat, const void *data) |
signature of a completion function that returns an ACL.
This method will be invoked at the end of a asynchronous call and also as a result of connection loss or timeout.
rc | the error code of the call. Connection loss/timeout triggers the completion with one of the following error codes: ZCONNECTIONLOSS -- lost connection to the server ZOPERATIONTIMEOUT -- connection timed out Data related events trigger the completion with error codes listed the Exceptions section of the documentation of the function that initiated the call. (Zero indicates call was successful.) |
acl | a pointer to the structure containng the ACL of a node. If a non zero error code is returned, the content of strings is undefined. The programmer is NOT responsible for freeing acl. |
stat | a pointer to the stat information for the node involved in this function. If a non zero error code is returned, the content of stat is undefined. The programmer is NOT responsible for freeing stat. |
data | the pointer that was passed by the caller when the function that this completion corresponds to was invoked. The programmer is responsible for any memory freeing associated with the data pointer. |
typedef void(* data_completion_t)(int rc, const char *value, int value_len, const struct Stat *stat, const void *data) |
signature of a completion function that returns data.
This method will be invoked at the end of a asynchronous call and also as a result of connection loss or timeout.
rc | the error code of the call. Connection loss/timeout triggers the completion with one of the following error codes: ZCONNECTIONLOSS -- lost connection to the server ZOPERATIONTIMEOUT -- connection timed out Data related events trigger the completion with error codes listed the Exceptions section of the documentation of the function that initiated the call. (Zero indicates call was successful.) |
value | the value of the information returned by the asynchronous call. If a non zero error code is returned, the content of value is undefined. The programmer is NOT responsible for freeing value. |
value_len | the number of bytes in value. |
stat | a pointer to the stat information for the node involved in this function. If a non zero error code is returned, the content of stat is undefined. The programmer is NOT responsible for freeing stat. |
data | the pointer that was passed by the caller when the function that this completion corresponds to was invoked. The programmer is responsible for any memory freeing associated with the data pointer. |
typedef void(* stat_completion_t)(int rc, const struct Stat *stat, const void *data) |
signature of a completion function that returns a Stat structure.
This method will be invoked at the end of a asynchronous call and also as a result of connection loss or timeout.
rc | the error code of the call. Connection loss/timeout triggers the completion with one of the following error codes: ZCONNECTIONLOSS -- lost connection to the server ZOPERATIONTIMEOUT -- connection timed out Data related events trigger the completion with error codes listed the Exceptions section of the documentation of the function that initiated the call. (Zero indicates call was successful.) |
stat | a pointer to the stat information for the node involved in this function. If a non zero error code is returned, the content of stat is undefined. The programmer is NOT responsible for freeing stat. |
data | the pointer that was passed by the caller when the function that this completion corresponds to was invoked. The programmer is responsible for any memory freeing associated with the data pointer. |
typedef void(* string_completion_t)(int rc, const char *value, const void *data) |
signature of a completion function that returns a list of strings.
This method will be invoked at the end of a asynchronous call and also as a result of connection loss or timeout.
rc | the error code of the call. Connection loss/timeout triggers the completion with one of the following error codes: ZCONNECTIONLOSS -- lost connection to the server ZOPERATIONTIMEOUT -- connection timed out Data related events trigger the completion with error codes listed the Exceptions section of the documentation of the function that initiated the call. (Zero indicates call was successful.) |
value | the value of the string returned. |
data | the pointer that was passed by the caller when the function that this completion corresponds to was invoked. The programmer is responsible for any memory freeing associated with the data pointer. |
typedef void(* strings_completion_t)(int rc, const struct String_vector *strings, const void *data) |
signature of a completion function that returns a list of strings.
This method will be invoked at the end of a asynchronous call and also as a result of connection loss or timeout.
rc | the error code of the call. Connection loss/timeout triggers the completion with one of the following error codes: ZCONNECTIONLOSS -- lost connection to the server ZOPERATIONTIMEOUT -- connection timed out Data related events trigger the completion with error codes listed the Exceptions section of the documentation of the function that initiated the call. (Zero indicates call was successful.) |
strings | a pointer to the structure containng the list of strings of the names of the children of a node. If a non zero error code is returned, the content of strings is undefined. The programmer is NOT responsible for freeing strings. |
data | the pointer that was passed by the caller when the function that this completion corresponds to was invoked. The programmer is responsible for any memory freeing associated with the data pointer. |
typedef void(* void_completion_t)(int rc, const void *data) |
signature of a completion function for a call that returns void.
This method will be invoked at the end of a asynchronous call and also as a result of connection loss or timeout.
rc | the error code of the call. Connection loss/timeout triggers the completion with one of the following error codes: ZCONNECTIONLOSS -- lost connection to the server ZOPERATIONTIMEOUT -- connection timed out Data related events trigger the completion with error codes listed the Exceptions section of the documentation of the function that initiated the call. (Zero indicates call was successful.) |
data | the pointer that was passed by the caller when the function that this completion corresponds to was invoked. The programmer is responsible for any memory freeing associated with the data pointer. |
typedef void(* watcher_fn)(zhandle_t *zh, int type, int state, const char *path, void *watcherCtx) |
signature of a watch function.
There are two ways to receive watch notifications: legacy and watcher object.
The legacy style, an application wishing to receive events from ZooKeeper must first implement a function with this signature and pass a pointer to the function to zookeeper_init. Next, the application sets a watch by calling one of the getter API that accept the watch integer flag (for example, zoo_aexists, zoo_get, etc).
The watcher object style uses an instance of a "watcher object" which in the C world is represented by a pair: a pointer to a function implementing this signature and a pointer to watcher context -- handback user-specific data. When a watch is triggered this function will be called along with the watcher context. An application wishing to use this style must use the getter API functions with the "w" prefix in their names (for example, zoo_awexists, zoo_wget, etc).
zh | zookeeper handle |
type | event type. This is one of the *_EVENT constants. |
state | connection state. The state value will be one of the *_STATE constants. |
path | znode path for which the watcher is triggered. NULL if the event type is ZOO_SESSION_EVENT |
watcherCtx | watcher context. |
typedef struct _zhandle zhandle_t |
ZooKeeper handle.
This is the handle that represents a connection to the ZooKeeper service. It is needed to invoke any ZooKeeper function. A handle is obtained using zookeeper_init.
enum ZOO_ERRORS |
zookeeper return constants
ZOK |
Everything is OK |
ZSYSTEMERROR |
System and server-side errors. This is never thrown by the server, it shouldn't be used other than to indicate a range. Specifically error codes greater than this value, but lesser than ZAPIERROR, are system errors. |
ZRUNTIMEINCONSISTENCY |
A runtime inconsistency was found |
ZDATAINCONSISTENCY |
A data inconsistency was found |
ZCONNECTIONLOSS |
Connection to the server has been lost |
ZMARSHALLINGERROR |
Error while marshalling or unmarshalling data |
ZUNIMPLEMENTED |
Operation is unimplemented |
ZOPERATIONTIMEOUT |
Operation timeout |
ZBADARGUMENTS |
Invalid arguments |
ZINVALIDSTATE |
Invliad zhandle state |
ZAPIERROR |
API errors. This is never thrown by the server, it shouldn't be used other than to indicate a range. Specifically error codes greater than this value are API errors (while values less than this indicate a ZSYSTEMERROR). |
ZNONODE |
Node does not exist |
ZNOAUTH |
Not authenticated |
ZBADVERSION |
Version conflict |
ZNOCHILDRENFOREPHEMERALS |
Ephemeral nodes may not have children |
ZNODEEXISTS |
The node already exists |
ZNOTEMPTY |
The node has children |
ZSESSIONEXPIRED |
The session has been expired by the server |
ZINVALIDCALLBACK |
Invalid callback specified |
ZINVALIDACL |
Invalid ACL specified |
ZAUTHFAILED |
Client authentication failed |
ZCLOSING |
ZooKeeper is closing |
ZNOTHING |
(not error) no server responses to process |
ZSESSIONMOVED |
session moved to another server, so operation is ignored |
ZOOAPI int is_unrecoverable | ( | zhandle_t * | zh | ) |
checks if the current zookeeper connection state can't be recovered.
The application must close the zhandle and try to reconnect.
zh | the zookeeper handle (see zookeeper_init) |
ZOOAPI const char* zerror | ( | int | c | ) |
return an error string.
return | code |
ZOOAPI int zoo_acreate | ( | zhandle_t * | zh, |
const char * | path, | ||
const char * | value, | ||
int | valuelen, | ||
const struct ACL_vector * | acl, | ||
int | flags, | ||
string_completion_t | completion, | ||
const void * | data | ||
) |
create a node.
This method will create a node in ZooKeeper. A node can only be created if it does not already exists. The Create Flags affect the creation of nodes. If ZOO_EPHEMERAL flag is set, the node will automatically get removed if the client session goes away. If the ZOO_SEQUENCE flag is set, a unique monotonically increasing sequence number is appended to the path name.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | The name of the node. Expressed as a file name with slashes separating ancestors of the node. |
value | The data to be stored in the node. |
valuelen | The number of bytes in data. |
acl | The initial ACL of the node. If null, the ACL of the parent will be used. |
flags | this parameter can be set to 0 for normal create or an OR of the Create Flags |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the parent node does not exist. ZNODEEXISTS the node already exists ZNOAUTH the client does not have permission. ZNOCHILDRENFOREPHEMERALS cannot create children of ephemeral nodes. |
data | The data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_add_auth | ( | zhandle_t * | zh, |
const char * | scheme, | ||
const char * | cert, | ||
int | certLen, | ||
void_completion_t | completion, | ||
const void * | data | ||
) |
specify application credentials.
The application calls this function to specify its credentials for purposes of authentication. The server will use the security provider specified by the scheme parameter to authenticate the client connection. If the authentication request has failed:
zh | the zookeeper handle obtained by a call to zookeeper_init |
scheme | the id of authentication scheme. Natively supported: "digest" password-based authentication |
cert | application credentials. The actual value depends on the scheme. |
certLen | the length of the data parameter |
completion | the routine to invoke when the request completes. One of the following result codes may be passed into the completion callback: ZOK operation completed successfully ZAUTHFAILED authentication failed |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_adelete | ( | zhandle_t * | zh, |
const char * | path, | ||
int | version, | ||
void_completion_t | completion, | ||
const void * | data | ||
) |
delete a node in zookeeper.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
version | the expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. ZBADVERSION expected version does not match actual version. ZNOTEMPTY children are present; node cannot be deleted. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_aexists | ( | zhandle_t * | zh, |
const char * | path, | ||
int | watch, | ||
stat_completion_t | completion, | ||
const void * | data | ||
) |
checks the existence of a node in zookeeper.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watch | if nonzero, a watch will be set at the server to notify the client if the node changes. The watch will be set even if the node does not exist. This allows clients to watch for nodes to appear. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_aget | ( | zhandle_t * | zh, |
const char * | path, | ||
int | watch, | ||
data_completion_t | completion, | ||
const void * | data | ||
) |
gets the data associated with a node.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watch | if nonzero, a watch will be set at the server to notify the client if the node changes. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_aget_acl | ( | zhandle_t * | zh, |
const char * | path, | ||
acl_completion_t | completion, | ||
const void * | data | ||
) |
gets the acl associated with a node.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_aget_children | ( | zhandle_t * | zh, |
const char * | path, | ||
int | watch, | ||
strings_completion_t | completion, | ||
const void * | data | ||
) |
lists the children of a node.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watch | if nonzero, a watch will be set at the server to notify the client if the node changes. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_aset | ( | zhandle_t * | zh, |
const char * | path, | ||
const char * | buffer, | ||
int | buflen, | ||
int | version, | ||
stat_completion_t | completion, | ||
const void * | data | ||
) |
sets the data associated with a node.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
buffer | the buffer holding data to be written to the node. |
buflen | the number of bytes from buffer to write. |
version | the expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place. * completion: If null, the function will execute synchronously. Otherwise, the function will return immediately and invoke the completion routine when the request completes. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. ZBADVERSION expected version does not match actual version. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_aset_acl | ( | zhandle_t * | zh, |
const char * | path, | ||
int | version, | ||
struct ACL_vector * | acl, | ||
void_completion_t | , | ||
const void * | data | ||
) |
sets the acl associated with a node.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
buffer | the buffer holding the acls to be written to the node. |
buflen | the number of bytes from buffer to write. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. ZINVALIDACL invalid ACL specified ZBADVERSION expected version does not match actual version. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_async | ( | zhandle_t * | zh, |
const char * | path, | ||
string_completion_t | completion, | ||
const void * | data | ||
) |
Flush leader channel.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_awexists | ( | zhandle_t * | zh, |
const char * | path, | ||
watcher_fn | watcher, | ||
void * | watcherCtx, | ||
stat_completion_t | completion, | ||
const void * | data | ||
) |
checks the existence of a node in zookeeper.
This function is similar to zoo_axists except it allows one specify a watcher object - a function pointer and associated context. The function will be called once the watch has fired. The associated context data will be passed to the function as the watcher context parameter.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watcher | if non-null a watch will set on the specified znode on the server. The watch will be set even if the node does not exist. This allows clients to watch for nodes to appear. |
watcherCtx | user specific data, will be passed to the watcher callback. Unlike the global context set by zookeeper_init, this watcher context is associated with the given instance of the watcher only. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_awget | ( | zhandle_t * | zh, |
const char * | path, | ||
watcher_fn | watcher, | ||
void * | watcherCtx, | ||
data_completion_t | completion, | ||
const void * | data | ||
) |
gets the data associated with a node.
This function is similar to zoo_aget except it allows one specify a watcher object rather than a boolean watch flag.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watcher | if non-null, a watch will be set at the server to notify the client if the node changes. |
watcherCtx | user specific data, will be passed to the watcher callback. Unlike the global context set by zookeeper_init, this watcher context is associated with the given instance of the watcher only. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_awget_children | ( | zhandle_t * | zh, |
const char * | path, | ||
watcher_fn | watcher, | ||
void * | watcherCtx, | ||
strings_completion_t | completion, | ||
const void * | data | ||
) |
lists the children of a node.
This function is similar to zoo_aget_children except it allows one specify a watcher object rather than a boolean watch flag.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watcher | if non-null, a watch will be set at the server to notify the client if the node changes. |
watcherCtx | user specific data, will be passed to the watcher callback. Unlike the global context set by zookeeper_init, this watcher context is associated with the given instance of the watcher only. |
completion | the routine to invoke when the request completes. The completion will be triggered with one of the following codes passed in as the rc argument: ZOK operation completed succesfully ZNONODE the node does not exist. ZNOAUTH the client does not have permission. |
data | the data that will be passed to the completion routine when the function completes. |
ZOOAPI int zoo_create | ( | zhandle_t * | zh, |
const char * | path, | ||
const char * | value, | ||
int | valuelen, | ||
const struct ACL_vector * | acl, | ||
int | flags, | ||
char * | path_buffer, | ||
int | path_buffer_len | ||
) |
create a node synchronously.
This method will create a node in ZooKeeper. A node can only be created if it does not already exists. The Create Flags affect the creation of nodes. If ZOO_EPHEMERAL flag is set, the node will automatically get removed if the client session goes away. If the ZOO_SEQUENCE flag is set, a unique monotonically increasing sequence number is appended to the path name.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | The name of the node. Expressed as a file name with slashes separating ancestors of the node. |
value | The data to be stored in the node. |
valuelen | The number of bytes in data. To set the data to be NULL use value as NULL and valuelen as -1. |
acl | The initial ACL of the node. If null, the ACL of the parent will be used. |
flags | this parameter can be set to 0 for normal create or an OR of the Create Flags |
path_buffer | Buffer which will be filled with the path of the new node (this might be different than the supplied path because of the ZOO_SEQUENCE flag). The path string will always be null-terminated. |
path_buffer_len | Size of path buffer; if the path of the new node (including space for the null terminator) exceeds the buffer size, the path string will be truncated to fit. The actual path of the new node in the server will not be affected by the truncation. The path string will always be null-terminated. |
ZOOAPI int zoo_delete | ( | zhandle_t * | zh, |
const char * | path, | ||
int | version | ||
) |
delete a node in zookeeper synchronously.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
version | the expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place. |
ZOOAPI void zoo_deterministic_conn_order | ( | int | yesOrNo | ) |
enable/disable quorum endpoint order randomization
If passed a non-zero value, will make the client connect to quorum peers in the order as specified in the zookeeper_init() call. A zero value causes zookeeper_init() to permute the peer endpoints which is good for more even client connection distribution among the quorum peers.
ZOOAPI int zoo_exists | ( | zhandle_t * | zh, |
const char * | path, | ||
int | watch, | ||
struct Stat * | stat | ||
) |
checks the existence of a node in zookeeper synchronously.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watch | if nonzero, a watch will be set at the server to notify the client if the node changes. The watch will be set even if the node does not exist. This allows clients to watch for nodes to appear. |
the | return stat value of the node. |
ZOOAPI int zoo_get | ( | zhandle_t * | zh, |
const char * | path, | ||
int | watch, | ||
char * | buffer, | ||
int * | buffer_len, | ||
struct Stat * | stat | ||
) |
gets the data associated with a node synchronously.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watch | if nonzero, a watch will be set at the server to notify the client if the node changes. |
buffer | the buffer holding the node data returned by the server |
buffer_len | is the size of the buffer pointed to by the buffer parameter. It'll be set to the actual data length upon return. If the data is NULL, length is -1. |
stat | if not NULL, will hold the value of stat for the path on return. |
ZOOAPI int zoo_get_acl | ( | zhandle_t * | zh, |
const char * | path, | ||
struct ACL_vector * | acl, | ||
struct Stat * | stat | ||
) |
gets the acl associated with a node synchronously.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
acl | the return value of acls on the path. |
stat | returns the stat of the path specified. |
ZOOAPI int zoo_get_children | ( | zhandle_t * | zh, |
const char * | path, | ||
int | watch, | ||
struct String_vector * | strings | ||
) |
lists the children of a node synchronously.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watch | if nonzero, a watch will be set at the server to notify the client if the node changes. |
strings | return value of children paths. |
ZOOAPI int zoo_set | ( | zhandle_t * | zh, |
const char * | path, | ||
const char * | buffer, | ||
int | buflen, | ||
int | version | ||
) |
sets the data associated with a node. See zoo_set2 function if you require access to the stat information associated with the znode.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
buffer | the buffer holding data to be written to the node. |
buflen | the number of bytes from buffer to write. To set NULL as data use buffer as NULL and buflen as -1. |
version | the expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place. |
ZOOAPI int zoo_set2 | ( | zhandle_t * | zh, |
const char * | path, | ||
const char * | buffer, | ||
int | buflen, | ||
int | version, | ||
struct Stat * | stat | ||
) |
sets the data associated with a node. This function is the same as zoo_set except that it also provides access to stat information associated with the znode.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
buffer | the buffer holding data to be written to the node. |
buflen | the number of bytes from buffer to write. To set NULL as data use buffer as NULL and buflen as -1. |
version | the expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place. |
stat | if not NULL, will hold the value of stat for the path on return. |
ZOOAPI int zoo_set_acl | ( | zhandle_t * | zh, |
const char * | path, | ||
int | version, | ||
const struct ACL_vector * | acl | ||
) |
sets the acl associated with a node synchronously.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
version | the expected version of the path. |
acl | the acl to be set on the path. |
ZOOAPI void zoo_set_log_stream | ( | FILE * | logStream | ) |
sets the stream to be used by the library for logging
The zookeeper library uses stderr as its default log stream. Application must make sure the stream is writable. Passing in NULL resets the stream to its default value (stderr).
ZOOAPI watcher_fn zoo_set_watcher | ( | zhandle_t * | zh, |
watcher_fn | newFn | ||
) |
set a watcher function
ZOOAPI int zoo_state | ( | zhandle_t * | zh | ) |
get the state of the zookeeper connection.
The return value will be one of the State Consts.
ZOOAPI int zoo_wexists | ( | zhandle_t * | zh, |
const char * | path, | ||
watcher_fn | watcher, | ||
void * | watcherCtx, | ||
struct Stat * | stat | ||
) |
checks the existence of a node in zookeeper synchronously.
This function is similar to zoo_exists except it allows one specify a watcher object rather than a boolean watch flag.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watcher | if non-null a watch will set on the specified znode on the server. The watch will be set even if the node does not exist. This allows clients to watch for nodes to appear. |
watcherCtx | user specific data, will be passed to the watcher callback. Unlike the global context set by zookeeper_init, this watcher context is associated with the given instance of the watcher only. |
the | return stat value of the node. |
ZOOAPI int zoo_wget | ( | zhandle_t * | zh, |
const char * | path, | ||
watcher_fn | watcher, | ||
void * | watcherCtx, | ||
char * | buffer, | ||
int * | buffer_len, | ||
struct Stat * | stat | ||
) |
gets the data associated with a node synchronously.
This function is similar to zoo_get except it allows one specify a watcher object rather than a boolean watch flag.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watcher | if non-null, a watch will be set at the server to notify the client if the node changes. |
watcherCtx | user specific data, will be passed to the watcher callback. Unlike the global context set by zookeeper_init, this watcher context is associated with the given instance of the watcher only. |
buffer | the buffer holding the node data returned by the server |
buffer_len | is the size of the buffer pointed to by the buffer parameter. It'll be set to the actual data length upon return. If the data is NULL, length is -1. |
stat | if not NULL, will hold the value of stat for the path on return. |
ZOOAPI int zoo_wget_children | ( | zhandle_t * | zh, |
const char * | path, | ||
watcher_fn | watcher, | ||
void * | watcherCtx, | ||
struct String_vector * | strings | ||
) |
lists the children of a node synchronously.
This function is similar to zoo_get_children except it allows one specify a watcher object rather than a boolean watch flag.
zh | the zookeeper handle obtained by a call to zookeeper_init |
path | the name of the node. Expressed as a file name with slashes separating ancestors of the node. |
watcher | if non-null, a watch will be set at the server to notify the client if the node changes. |
watcherCtx | user specific data, will be passed to the watcher callback. Unlike the global context set by zookeeper_init, this watcher context is associated with the given instance of the watcher only. |
strings | return value of children paths. |
ZOOAPI int zookeeper_close | ( | zhandle_t * | zh | ) |
close the zookeeper handle and free up any resources.
After this call, the client session will no longer be valid. The function will flush any outstanding send requests before return. As a result it may block.
This method should only be called only once on a zookeeper handle. Calling twice will cause undefined (and probably undesirable behavior). Calling any other zookeeper method after calling close is undefined behaviour and should be avoided.
zh | the zookeeper handle obtained by a call to zookeeper_init |
ZOK - success ZBADARGUMENTS - invalid input parameters ZMARSHALLINGERROR - failed to marshall a request; possibly, out of memory ZOPERATIONTIMEOUT - failed to flush the buffers within the specified timeout. ZCONNECTIONLOSS - a network error occured while attempting to send request to server ZSYSTEMERROR -- a system (OS) error occured; it's worth checking errno to get details
ZOOAPI zhandle_t* zookeeper_init | ( | const char * | host, |
watcher_fn | fn, | ||
int | recv_timeout, | ||
const clientid_t * | clientid, | ||
void * | context, | ||
int | flags | ||
) |
create a handle to used communicate with zookeeper.
This method creates a new handle and a zookeeper session that corresponds to that handle. Session establishment is asynchronous, meaning that the session should not be considered established until (and unless) an event of state ZOO_CONNECTED_STATE is received.
host | comma separated host:port pairs, each corresponding to a zk server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002" |
fn | the global watcher callback function. When notifications are triggered this function will be invoked. |
clientid | the id of a previously established session that this client will be reconnecting to. Pass 0 if not reconnecting to a previous session. Clients can access the session id of an established, valid, connection by calling zoo_client_id. If the session corresponding to the specified clientid has expired, or if the clientid is invalid for any reason, the returned zhandle_t will be invalid -- the zhandle_t state will indicate the reason for failure (typically ZOO_EXPIRED_SESSION_STATE). |
context | the handback object that will be associated with this instance of zhandle_t. Application can access it (for example, in the watcher callback) using zoo_get_context. The object is not used by zookeeper internally and can be null. |
flags | reserved for future use. Should be set to zero. |
ZOOAPI int zookeeper_interest | ( | zhandle_t * | zh, |
int * | fd, | ||
int * | interest, | ||
struct timeval * | tv | ||
) |
Returns the events that zookeeper is interested in.
zh | the zookeeper handle obtained by a call to zookeeper_init |
fd | is the file descriptor of interest |
interest | is an or of the ZOOKEEPER_WRITE and ZOOKEEPER_READ flags to indicate the I/O of interest on fd. |
tv | a timeout value to be used with select/poll system call |
ZOOAPI int zookeeper_process | ( | zhandle_t * | zh, |
int | events | ||
) |
Notifies zookeeper that an event of interest has happened.
zh | the zookeeper handle obtained by a call to zookeeper_init |
events | will be an OR of the ZOOKEEPER_WRITE and ZOOKEEPER_READ flags. |
ZOOAPI struct Id ZOO_ANYONE_ID_UNSAFE |
This Id represents anyone.
ZOOAPI struct Id ZOO_AUTH_IDS |
This Id is only usable to set ACLs. It will get substituted with the Id's the client authenticated with.
ZOOAPI const int ZOO_CHANGED_EVENT |
a node has changed.
This is only generated by watches on nodes. These watches are set using zoo_exists and zoo_get.
ZOOAPI const int ZOO_CHILD_EVENT |
a change as occurred in the list of children.
This is only generated by watches on the child list of a node. These watches are set using zoo_get_children.
ZOOAPI const int ZOO_CREATED_EVENT |
a node has been created.
This is only generated by watches on non-existent nodes. These watches are set using zoo_exists.
ZOOAPI struct ACL_vector ZOO_CREATOR_ALL_ACL |
This ACL gives the creators authentication id's all permissions.
ZOOAPI const int ZOO_DELETED_EVENT |
a node has been deleted.
This is only generated by watches on nodes. These watches are set using zoo_exists and zoo_get.
ZOOAPI const int ZOO_NOTWATCHING_EVENT |
a watch has been removed.
This is generated when the server for some reason, probably a resource constraint, will no longer watch a node for a client.
ZOOAPI struct ACL_vector ZOO_OPEN_ACL_UNSAFE |
This is a completely open ACL
ZOOAPI struct ACL_vector ZOO_READ_ACL_UNSAFE |
This ACL gives the world the ability to read.
ZOOAPI const int ZOO_SESSION_EVENT |
a session has been lost.
This is generated when a client loses contact or reconnects with a server.