zookeeper-3.2.1

include/zookeeper.h

Go to the documentation of this file.
00001 
00019 #ifndef ZOOKEEPER_H_
00020 #define ZOOKEEPER_H_
00021 
00022 #include <sys/time.h>
00023 #include <stdio.h>
00024 
00025 #include "zookeeper_version.h"
00026 #include "recordio.h"
00027 #include "zookeeper.jute.h"
00028 
00059 /* Support for building on various platforms */
00060 
00061 // on cygwin we should take care of exporting/importing symbols properly 
00062 #ifdef DLL_EXPORT
00063 #    define ZOOAPI __declspec(dllexport)
00064 #else
00065 #  if defined(__CYGWIN__) && !defined(USE_STATIC_LIB)
00066 #    define ZOOAPI __declspec(dllimport)
00067 #  else
00068 #    define ZOOAPI
00069 #  endif
00070 #endif
00071 
00074 enum ZOO_ERRORS {
00075   ZOK = 0, 
00081   ZSYSTEMERROR = -1,
00082   ZRUNTIMEINCONSISTENCY = -2, 
00083   ZDATAINCONSISTENCY = -3, 
00084   ZCONNECTIONLOSS = -4, 
00085   ZMARSHALLINGERROR = -5, 
00086   ZUNIMPLEMENTED = -6, 
00087   ZOPERATIONTIMEOUT = -7, 
00088   ZBADARGUMENTS = -8, 
00089   ZINVALIDSTATE = -9, 
00097   ZAPIERROR = -100,
00098   ZNONODE = -101, 
00099   ZNOAUTH = -102, 
00100   ZBADVERSION = -103, 
00101   ZNOCHILDRENFOREPHEMERALS = -108, 
00102   ZNODEEXISTS = -110, 
00103   ZNOTEMPTY = -111, 
00104   ZSESSIONEXPIRED = -112, 
00105   ZINVALIDCALLBACK = -113, 
00106   ZINVALIDACL = -114, 
00107   ZAUTHFAILED = -115, 
00108   ZCLOSING = -116, 
00109   ZNOTHING = -117, 
00110   ZSESSIONMOVED = -118 
00111 };
00112 
00113 #ifdef __cplusplus
00114 extern "C" {
00115 #endif
00116 
00120 typedef enum {ZOO_LOG_LEVEL_ERROR=1,ZOO_LOG_LEVEL_WARN=2,ZOO_LOG_LEVEL_INFO=3,ZOO_LOG_LEVEL_DEBUG=4} ZooLogLevel;
00121 
00125 extern ZOOAPI const int ZOO_PERM_READ;
00126 extern ZOOAPI const int ZOO_PERM_WRITE;
00127 extern ZOOAPI const int ZOO_PERM_CREATE;
00128 extern ZOOAPI const int ZOO_PERM_DELETE;
00129 extern ZOOAPI const int ZOO_PERM_ADMIN;
00130 extern ZOOAPI const int ZOO_PERM_ALL;
00131 
00133 extern ZOOAPI struct Id ZOO_ANYONE_ID_UNSAFE;
00137 extern ZOOAPI struct Id ZOO_AUTH_IDS;
00138 
00140 extern ZOOAPI struct ACL_vector ZOO_OPEN_ACL_UNSAFE;
00142 extern ZOOAPI struct ACL_vector ZOO_READ_ACL_UNSAFE;
00144 extern ZOOAPI struct ACL_vector ZOO_CREATOR_ALL_ACL;
00145 
00154 // @{
00155 extern ZOOAPI const int ZOOKEEPER_WRITE;
00156 extern ZOOAPI const int ZOOKEEPER_READ;
00157 // @}
00158 
00165 // @{
00166 extern ZOOAPI const int ZOO_EPHEMERAL;
00167 extern ZOOAPI const int ZOO_SEQUENCE;
00168 // @}
00169 
00175 // @{
00176 extern ZOOAPI const int ZOO_EXPIRED_SESSION_STATE;
00177 extern ZOOAPI const int ZOO_AUTH_FAILED_STATE;
00178 extern ZOOAPI const int ZOO_CONNECTING_STATE;
00179 extern ZOOAPI const int ZOO_ASSOCIATING_STATE;
00180 extern ZOOAPI const int ZOO_CONNECTED_STATE;
00181 // @}
00182 
00188 // @{
00195 extern ZOOAPI const int ZOO_CREATED_EVENT;
00202 extern ZOOAPI const int ZOO_DELETED_EVENT;
00209 extern ZOOAPI const int ZOO_CHANGED_EVENT;
00216 extern ZOOAPI const int ZOO_CHILD_EVENT;
00222 extern ZOOAPI const int ZOO_SESSION_EVENT;
00223 
00230 extern ZOOAPI const int ZOO_NOTWATCHING_EVENT;
00231 // @}
00232 
00240 typedef struct _zhandle zhandle_t;
00241 
00249 typedef struct {
00250     int64_t client_id;
00251     char passwd[16];
00252 } clientid_t;
00253 
00280 typedef void (*watcher_fn)(zhandle_t *zh, int type, 
00281         int state, const char *path,void *watcherCtx);
00282 
00311 ZOOAPI zhandle_t *zookeeper_init(const char *host, watcher_fn fn,
00312   int recv_timeout, const clientid_t *clientid, void *context, int flags);
00313 
00336 ZOOAPI int zookeeper_close(zhandle_t *zh);
00337 
00342 ZOOAPI const clientid_t *zoo_client_id(zhandle_t *zh);
00343 
00344 ZOOAPI int zoo_recv_timeout(zhandle_t *zh);
00345 
00346 ZOOAPI const void *zoo_get_context(zhandle_t *zh);
00347 
00348 ZOOAPI void zoo_set_context(zhandle_t *zh, void *context);
00349 
00354 ZOOAPI watcher_fn zoo_set_watcher(zhandle_t *zh,watcher_fn newFn);
00355 
00356 #ifndef THREADED
00357 
00376 ZOOAPI int zookeeper_interest(zhandle_t *zh, int *fd, int *interest, 
00377         struct timeval *tv);
00378 
00396 ZOOAPI int zookeeper_process(zhandle_t *zh, int events);
00397 #endif
00398 
00416 typedef void (*void_completion_t)(int rc, const void *data);
00417 
00438 typedef void (*stat_completion_t)(int rc, const struct Stat *stat,
00439         const void *data);
00440 
00465 typedef void (*data_completion_t)(int rc, const char *value, int value_len,
00466         const struct Stat *stat, const void *data);
00467 
00489 typedef void (*strings_completion_t)(int rc,
00490         const struct String_vector *strings, const void *data);
00491 
00510 typedef void
00511         (*string_completion_t)(int rc, const char *value, const void *data);
00512 
00536 typedef void (*acl_completion_t)(int rc, struct ACL_vector *acl,
00537         struct Stat *stat, const void *data);
00538 
00544 ZOOAPI int zoo_state(zhandle_t *zh);
00545 
00578 ZOOAPI int zoo_acreate(zhandle_t *zh, const char *path, const char *value, 
00579         int valuelen, const struct ACL_vector *acl, int flags,
00580         string_completion_t completion, const void *data);
00581 
00605 ZOOAPI int zoo_adelete(zhandle_t *zh, const char *path, int version, 
00606         void_completion_t completion, const void *data);
00607 
00629 ZOOAPI int zoo_aexists(zhandle_t *zh, const char *path, int watch, 
00630         stat_completion_t completion, const void *data);
00631 
00661 ZOOAPI int zoo_awexists(zhandle_t *zh, const char *path, 
00662         watcher_fn watcher, void* watcherCtx, 
00663         stat_completion_t completion, const void *data);
00664 
00685 ZOOAPI int zoo_aget(zhandle_t *zh, const char *path, int watch, 
00686         data_completion_t completion, const void *data);
00687 
00714 ZOOAPI int zoo_awget(zhandle_t *zh, const char *path, 
00715         watcher_fn watcher, void* watcherCtx, 
00716         data_completion_t completion, const void *data);
00717 
00744 ZOOAPI int zoo_aset(zhandle_t *zh, const char *path, const char *buffer, int buflen, 
00745         int version, stat_completion_t completion, const void *data);
00746 
00767 ZOOAPI int zoo_aget_children(zhandle_t *zh, const char *path, int watch, 
00768         strings_completion_t completion, const void *data);
00769 
00796 ZOOAPI int zoo_awget_children(zhandle_t *zh, const char *path,
00797         watcher_fn watcher, void* watcherCtx, 
00798         strings_completion_t completion, const void *data);
00799 
00819 ZOOAPI int zoo_async(zhandle_t *zh, const char *path, 
00820         string_completion_t completion, const void *data);
00821 
00822 
00841 ZOOAPI int zoo_aget_acl(zhandle_t *zh, const char *path, acl_completion_t completion, 
00842         const void *data);
00843 
00866 ZOOAPI int zoo_aset_acl(zhandle_t *zh, const char *path, int version, 
00867         struct ACL_vector *acl, void_completion_t, const void *data);
00868 
00875 ZOOAPI const char* zerror(int c);
00876 
00904 ZOOAPI int zoo_add_auth(zhandle_t *zh,const char* scheme,const char* cert, 
00905         int certLen, void_completion_t completion, const void *data);
00906 
00915 ZOOAPI int is_unrecoverable(zhandle_t *zh);
00916 
00920 ZOOAPI void zoo_set_debug_level(ZooLogLevel logLevel);
00921 
00929 ZOOAPI void zoo_set_log_stream(FILE* logStream);
00930 
00940 ZOOAPI void zoo_deterministic_conn_order(int yesOrNo);
00941 
00980 ZOOAPI int zoo_create(zhandle_t *zh, const char *path, const char *value,
00981         int valuelen, const struct ACL_vector *acl, int flags,
00982         char *path_buffer, int path_buffer_len);
00983 
01003 ZOOAPI int zoo_delete(zhandle_t *zh, const char *path, int version);
01004 
01005 
01024 ZOOAPI int zoo_exists(zhandle_t *zh, const char *path, int watch, struct Stat *stat);
01025 
01050 ZOOAPI int zoo_wexists(zhandle_t *zh, const char *path,
01051         watcher_fn watcher, void* watcherCtx, struct Stat *stat);
01052 
01073 ZOOAPI int zoo_get(zhandle_t *zh, const char *path, int watch, char *buffer,   
01074                    int* buffer_len, struct Stat *stat);
01075 
01102 ZOOAPI int zoo_wget(zhandle_t *zh, const char *path, 
01103         watcher_fn watcher, void* watcherCtx, 
01104         char *buffer, int* buffer_len, struct Stat *stat);
01105 
01128 ZOOAPI int zoo_set(zhandle_t *zh, const char *path, const char *buffer,
01129                    int buflen, int version);
01130 
01155 ZOOAPI int zoo_set2(zhandle_t *zh, const char *path, const char *buffer,
01156                    int buflen, int version, struct Stat *stat);
01157 
01175 ZOOAPI int zoo_get_children(zhandle_t *zh, const char *path, int watch,
01176                             struct String_vector *strings);
01177 
01201 ZOOAPI int zoo_wget_children(zhandle_t *zh, const char *path, 
01202         watcher_fn watcher, void* watcherCtx,
01203         struct String_vector *strings);
01204 
01221 ZOOAPI int zoo_get_acl(zhandle_t *zh, const char *path, struct ACL_vector *acl,
01222                        struct Stat *stat);
01223 
01242 ZOOAPI int zoo_set_acl(zhandle_t *zh, const char *path, int version,
01243                            const struct ACL_vector *acl);
01244 
01245 #ifdef __cplusplus
01246 }
01247 #endif
01248 
01249 #endif /*ZOOKEEPER_H_*/