<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->

<phpdoc:classref xml:id="class.zookeeper"
 xmlns:phpdoc="http://php.net/ns/phpdoc"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns="http://docbook.org/ns/docbook">
 <title>The Zookeeper class</title>
 <titleabbrev>Zookeeper</titleabbrev>
 
 <partintro>
 
<!-- {{{ Zookeeper intro -->
  <section xml:id="zookeeper.intro">
   &reftitle.intro;
   <para>
    Represents ZooKeeper session.
   </para>
  </section>
<!-- }}} -->
 
  <section xml:id="zookeeper.synopsis">
   &reftitle.classsynopsis;
 
<!-- {{{ Synopsis -->
   <classsynopsis>
    <ooclass><classname>Zookeeper</classname></ooclass>
 
<!-- {{{ Class synopsis -->
    <classsynopsisinfo>
     <ooclass>
      <classname>Zookeeper</classname>
     </ooclass>
 
    </classsynopsisinfo>
<!-- }}} -->
 
<!-- {{{ Class methods -->
    <classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
    <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.zookeeper')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])">
     <xi:fallback />
    </xi:include>
    <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.zookeeper')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])">
     <xi:fallback />
    </xi:include>
<!-- }}} -->

<!-- {{{ Class constants -->
    <classsynopsisinfo role="comment">&Constants;</classsynopsisinfo>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.perm-read">PERM_READ</varname>
     <initializer>1</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.perm-write">PERM_WRITE</varname>
     <initializer>2</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.perm-create">PERM_CREATE</varname>
     <initializer>4</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.perm-delete">PERM_DELETE</varname>
     <initializer>8</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.perm-admin">PERM_ADMIN</varname>
     <initializer>16</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.perm-all">PERM_ALL</varname>
     <initializer>31</initializer>
    </fieldsynopsis>

    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.ephemeral">EPHEMERAL</varname>
     <initializer>1</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.sequence">SEQUENCE</varname>
     <initializer>2</initializer>
    </fieldsynopsis>

    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.log-level-error">LOG_LEVEL_ERROR</varname>
     <initializer>1</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.log-level-warn">LOG_LEVEL_WARN</varname>
     <initializer>2</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.log-level-info">LOG_LEVEL_INFO</varname>
     <initializer>3</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.log-level-debug">LOG_LEVEL_DEBUG</varname>
     <initializer>4</initializer>
    </fieldsynopsis>

    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.expired-session-state">EXPIRED_SESSION_STATE</varname>
     <initializer>-112</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.auth-failed-state">AUTH_FAILED_STATE</varname>
     <initializer>-113</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.connecting-state">CONNECTING_STATE</varname>
     <initializer>1</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.associating-state">ASSOCIATING_STATE</varname>
     <initializer>2</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.connected-state">CONNECTED_STATE</varname>
     <initializer>3</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.readonly-state">READONLY_STATE</varname>
     <initializer>5</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.notconnected-state">NOTCONNECTED_STATE</varname>
     <initializer>999</initializer>
    </fieldsynopsis>

    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.created-event">CREATED_EVENT</varname>
     <initializer>1</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.deleted-event">DELETED_EVENT</varname>
     <initializer>2</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.changed-event">CHANGED_EVENT</varname>
     <initializer>3</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.child-event">CHILD_EVENT</varname>
     <initializer>4</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.session-event">SESSION_EVENT</varname>
     <initializer>-1</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.notwatching-event">NOTWATCHING_EVENT</varname>
     <initializer>-2</initializer>
    </fieldsynopsis>

    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.systemerror">SYSTEMERROR</varname>
     <initializer>-1</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.runtimeinconsistency">RUNTIMEINCONSISTENCY</varname>
     <initializer>-2</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.datainconsistency">DATAINCONSISTENCY</varname>
     <initializer>-3</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.connectionloss">CONNECTIONLOSS</varname>
     <initializer>-4</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.marshallingerror">MARSHALLINGERROR</varname>
     <initializer>-5</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.unimplemented">UNIMPLEMENTED</varname>
     <initializer>-6</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.operationtimeout">OPERATIONTIMEOUT</varname>
     <initializer>-7</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.badarguments">BADARGUMENTS</varname>
     <initializer>-8</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.invalidstate">INVALIDSTATE</varname>
     <initializer>-9</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.newconfignoquorum">NEWCONFIGNOQUORUM</varname>
     <initializer>-13</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.reconfiginprogress">RECONFIGINPROGRESS</varname>
     <initializer>-14</initializer>
    </fieldsynopsis>

    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.ok">OK</varname>
     <initializer>0</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.apierror">APIERROR</varname>
     <initializer>-100</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.nonode">NONODE</varname>
     <initializer>-101</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.noauth">NOAUTH</varname>
     <initializer>-102</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.badversion">BADVERSION</varname>
     <initializer>-103</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.nochildrenforephemerals">NOCHILDRENFOREPHEMERALS</varname>
     <initializer>-108</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.nodeexists">NODEEXISTS</varname>
     <initializer>-110</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.notempty">NOTEMPTY</varname>
     <initializer>-111</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.sessionexpired">SESSIONEXPIRED</varname>
     <initializer>-112</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.invalidcallback">INVALIDCALLBACK</varname>
     <initializer>-113</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.invalidacl">INVALIDACL</varname>
     <initializer>-114</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.authfailed">AUTHFAILED</varname>
     <initializer>-115</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.closing">CLOSING</varname>
     <initializer>-116</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.nothing">NOTHING</varname>
     <initializer>-117</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.sessionmoved">SESSIONMOVED</varname>
     <initializer>-118</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.notreadonly">NOTREADONLY</varname>
     <initializer>-119</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.ephemeralonlocalsession">EPHEMERALONLOCALSESSION</varname>
     <initializer>-120</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.nowatcher">NOWATCHER</varname>
     <initializer>-121</initializer>
    </fieldsynopsis>
    <fieldsynopsis>
     <modifier>const</modifier>
     <type>int</type>
     <varname linkend="zookeeper.class.constants.reconfigdisabled">RECONFIGDISABLED</varname>
     <initializer>-122</initializer>
    </fieldsynopsis>
<!-- }}} -->

   </classsynopsis>
<!-- }}} -->

  </section>

<!-- {{{ Constants -->
  <section xml:id="zookeeper.class.constants">
   &reftitle.constants;

<!-- {{{ Constants Permissions -->
   <section xml:id="zookeeper.class.constants.perms">
    <title><acronym>ZooKeeper</acronym> Permissions</title>
    <variablelist>

     <varlistentry xml:id="zookeeper.class.constants.perm-read">
      <term><constant>Zookeeper::PERM_READ</constant></term>
      <listitem>
       <para>Can read nodes value and list its children</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.perm-write">
      <term><constant>Zookeeper::PERM_WRITE</constant></term>
      <listitem>
       <para>Can set the nodes value</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.perm-create">
      <term><constant>Zookeeper::PERM_CREATE</constant></term>
      <listitem>
       <para>Can create children</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.perm-delete">
      <term><constant>Zookeeper::PERM_DELETE</constant></term>
      <listitem>
       <para>Can delete children</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.perm-admin">
      <term><constant>Zookeeper::PERM_ADMIN</constant></term>
      <listitem>
       <para>Can execute set_acl()</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.perm-all">
      <term><constant>Zookeeper::PERM_ALL</constant></term>
      <listitem>
       <para>All of the above flags ORd together</para>
      </listitem>
     </varlistentry>

    </variablelist>
   </section>
<!-- }}} -->

<!-- {{{ Constants Create Flags -->
   <section xml:id="zookeeper.class.constants.create-flags">
    <title><acronym>ZooKeeper</acronym> Create Flags</title>
    <variablelist>

     <varlistentry xml:id="zookeeper.class.constants.ephemeral">
      <term><constant>Zookeeper::EPHEMERAL</constant></term>
      <listitem>
       <para>If Zookeeper::EPHEMERAL flag is set, the node will automatically get removed if the client session goes away.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.sequence">
      <term><constant>Zookeeper::SEQUENCE</constant></term>
      <listitem>
       <para>If the Zookeeper::SEQUENCE flag is set, a unique monotonically increasing sequence number is appended to the path name. The sequence number is always fixed length of 10 digits, 0 padded.</para>
      </listitem>
     </varlistentry>
    </variablelist>
   </section>
<!-- }}} -->

<!-- {{{ Constants Log Levels -->
   <section xml:id="zookeeper.class.constants.log-levels">
    <title><acronym>ZooKeeper</acronym> Log Levels</title>
    <variablelist>

     <varlistentry xml:id="zookeeper.class.constants.log-level-error">
      <term><constant>Zookeeper::LOG_LEVEL_ERROR</constant></term>
      <listitem>
       <para>Outputs only error mesages</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.log-level-warn">
      <term><constant>Zookeeper::LOG_LEVEL_WARN</constant></term>
      <listitem>
       <para>Outputs errors/warnings</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.log-level-info">
      <term><constant>Zookeeper::LOG_LEVEL_INFO</constant></term>
      <listitem>
       <para>Outputs big action messages besides errors/warnings</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.log-level-debug">
      <term><constant>Zookeeper::LOG_LEVEL_DEBUG</constant></term>
      <listitem>
       <para>Outputs all</para>
      </listitem>
     </varlistentry>

    </variablelist>
   </section>
<!-- }}} -->

<!-- {{{ Constants States -->
   <section xml:id="zookeeper.class.constants.states">
    <title><acronym>ZooKeeper</acronym> States</title>
    <variablelist>

     <varlistentry xml:id="zookeeper.class.constants.expired-session-state">
      <term><constant>Zookeeper::EXPIRED_SESSION_STATE</constant></term>
      <listitem>
       <para>Connected but session expired</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.auth-failed-state">
      <term><constant>Zookeeper::AUTH_FAILED_STATE</constant></term>
      <listitem>
       <para>Connected but auth failed</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.connecting-state">
      <term><constant>Zookeeper::CONNECTING_STATE</constant></term>
      <listitem>
       <para>Connecting</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.associating-state">
      <term><constant>Zookeeper::ASSOCIATING_STATE</constant></term>
      <listitem>
       <para>Associating</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.connected-state">
      <term><constant>Zookeeper::CONNECTED_STATE</constant></term>
      <listitem>
       <para>Connected</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.readonly-state">
      <term><constant>Zookeeper::READONLY_STATE</constant></term>
      <listitem>
       <para>TODO: help us improve this extension.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.notconnected-state">
      <term><constant>Zookeeper::NOTCONNECTED_STATE</constant></term>
      <listitem>
       <para>Connection failed</para>
      </listitem>
     </varlistentry>

    </variablelist>
   </section>
<!-- }}} -->

<!-- {{{ Constants Watch Types -->
   <section xml:id="zookeeper.class.constants.watch-types">
    <title><acronym>ZooKeeper</acronym> Watch Types</title>
    <variablelist>

     <varlistentry xml:id="zookeeper.class.constants.created-event">
      <term><constant>Zookeeper::CREATED_EVENT</constant></term>
      <listitem>
       <para>A node has been created</para>
       <para>This is only generated by watches on non-existent nodes. These watches are set using Zookeeper::exists.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.deleted-event">
      <term><constant>Zookeeper::DELETED_EVENT</constant></term>
      <listitem>
       <para>A node has been deleted</para>
       <para>This is only generated by watches on nodes. These watches are set using Zookeeper::exists and Zookeeper::get.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.changed-event">
      <term><constant>Zookeeper::CHANGED_EVENT</constant></term>
      <listitem>
       <para>A node has changed</para>
       <para>This is only generated by watches on nodes. These watches are set using Zookeeper::exists and Zookeeper::get.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.child-event">
      <term><constant>Zookeeper::CHILD_EVENT</constant></term>
      <listitem>
       <para>A change as occurred in the list of children</para>
       <para>This is only generated by watches on the child list of a node. These watches are set using Zookeeper::getChildren.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.session-event">
      <term><constant>Zookeeper::SESSION_EVENT</constant></term>
      <listitem>
       <para>A session has been lost</para>
       <para>This is generated when a client loses contact or reconnects with a server.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.notwatching-event">
      <term><constant>Zookeeper::NOTWATCHING_EVENT</constant></term>
      <listitem>
       <para>A watch has been removed</para>
       <para>This is generated when the server for some reason, probably a resource constraint, will no longer watch a node for a client.</para>
      </listitem>
     </varlistentry>

    </variablelist>
   </section>
<!-- }}} -->

<!-- {{{ Constants System and Server-side Errors -->
   <section xml:id="zookeeper.class.constants.system-n-server-side-errors">
    <title><acronym>ZooKeeper</acronym> System and Server-side Errors</title>
    <variablelist>
     <varlistentry xml:id="zookeeper.class.constants.systemerror">
      <term><constant>Zookeeper::SYSTEMERROR</constant></term>
      <listitem>
       <para>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 Zookeeper::APIERROR, are system errors.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.runtimeinconsistency">
      <term><constant>Zookeeper::RUNTIMEINCONSISTENCY</constant></term>
      <listitem>
       <para>A runtime inconsistency was found.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.datainconsistency">
      <term><constant>Zookeeper::DATAINCONSISTENCY</constant></term>
      <listitem>
       <para>A data inconsistency was found.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.connectionloss">
      <term><constant>Zookeeper::CONNECTIONLOSS</constant></term>
      <listitem>
       <para>Connection to the server has been lost.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.marshallingerror">
      <term><constant>Zookeeper::MARSHALLINGERROR</constant></term>
      <listitem>
       <para>Error while marshalling or unmarshalling data.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.unimplemented">
      <term><constant>Zookeeper::UNIMPLEMENTED</constant></term>
      <listitem>
       <para>Operation is unimplemented.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.operationtimeout">
      <term><constant>Zookeeper::OPERATIONTIMEOUT</constant></term>
      <listitem>
       <para>Operation timeout.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.badarguments">
      <term><constant>Zookeeper::BADARGUMENTS</constant></term>
      <listitem>
       <para>Invalid arguments.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.invalidstate">
      <term><constant>Zookeeper::INVALIDSTATE</constant></term>
      <listitem>
       <para>Invliad zhandle state.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.newconfignoquorum">
      <term><constant>Zookeeper::NEWCONFIGNOQUORUM</constant></term>
      <listitem>
       <para>No quorum of new config is connected and up-to-date with the leader of last committed config - try invoking reconfiguration after new servers are connected and synced.</para>
       <para>Available as of ZooKeeper 3.5.0</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.reconfiginprogress">
      <term><constant>Zookeeper::RECONFIGINPROGRESS</constant></term>
      <listitem>
       <para>Reconfiguration requested while another reconfiguration is currently in progress. This is currently not supported. Please retry.</para>
       <para>Available as of ZooKeeper 3.5.0</para>
      </listitem>
     </varlistentry>
    </variablelist>
   </section>
<!-- }}} -->

<!-- {{{ Constants API Errors -->
   <section xml:id="zookeeper.class.constants.api-errors">
    <title><acronym>ZooKeeper</acronym> API Errors</title>
    <variablelist>
     <varlistentry xml:id="zookeeper.class.constants.ok">
      <term><constant>Zookeeper::OK</constant></term>
      <listitem>
       <para>Everything is OK.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.apierror">
      <term><constant>Zookeeper::APIERROR</constant></term>
      <listitem>
       <para>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 Zookeeper::SYSTEMERROR).</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.nonode">
      <term><constant>Zookeeper::NONODE</constant></term>
      <listitem>
       <para>Node does not exist.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.noauth">
      <term><constant>Zookeeper::NOAUTH</constant></term>
      <listitem>
       <para>Not authenticated.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.badversion">
      <term><constant>Zookeeper::BADVERSION</constant></term>
      <listitem>
       <para>Version conflict.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.nochildrenforephemerals">
      <term><constant>Zookeeper::NOCHILDRENFOREPHEMERALS</constant></term>
      <listitem>
       <para>Ephemeral nodes may not have children.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.nodeexists">
      <term><constant>Zookeeper::NODEEXISTS</constant></term>
      <listitem>
       <para>The node already exists.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.notempty">
      <term><constant>Zookeeper::NOTEMPTY</constant></term>
      <listitem>
       <para>The node has children.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.sessionexpired">
      <term><constant>Zookeeper::SESSIONEXPIRED</constant></term>
      <listitem>
       <para>The session has been expired by the server.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.invalidcallback">
      <term><constant>Zookeeper::INVALIDCALLBACK</constant></term>
      <listitem>
       <para>Invalid callback specified.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.invalidacl">
      <term><constant>Zookeeper::INVALIDACL</constant></term>
      <listitem>
       <para>Invalid ACL specified.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.authfailed">
      <term><constant>Zookeeper::AUTHFAILED</constant></term>
      <listitem>
       <para>Client authentication failed.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.closing">
      <term><constant>Zookeeper::CLOSING</constant></term>
      <listitem>
       <para>ZooKeeper is closing.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.nothing">
      <term><constant>Zookeeper::NOTHING</constant></term>
      <listitem>
       <para>(not error) No server responses to process.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.sessionmoved">
      <term><constant>Zookeeper::SESSIONMOVED</constant></term>
      <listitem>
       <para>Session moved to another server, so operation is ignored.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.notreadonly">
      <term><constant>Zookeeper::NOTREADONLY</constant></term>
      <listitem>
       <para>State-changing request is passed to read-only server.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.ephemeralonlocalsession">
      <term><constant>Zookeeper::EPHEMERALONLOCALSESSION</constant></term>
      <listitem>
       <para>Attempt to create ephemeral node on a local session.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.nowatcher">
      <term><constant>Zookeeper::NOWATCHER</constant></term>
      <listitem>
       <para>The watcher couldn't be found.</para>
      </listitem>
     </varlistentry>
     <varlistentry xml:id="zookeeper.class.constants.reconfigdisabled">
      <term><constant>Zookeeper::RECONFIGDISABLED</constant></term>
      <listitem>
       <para>Attempts to perform a reconfiguration operation when reconfiguration feature is disabled.</para>
      </listitem>
     </varlistentry>
    </variablelist>
   </section>
<!-- }}} -->

  </section>

<!-- }}} -->
 
 </partintro>
 
 &reference.zookeeper.entities.zookeeper;
 
</phpdoc:classref>
 
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

