pushed the following commits:\
[m6w6/libmemcached] / libmemcached / memcached_cas.html
index fdd8d6aed13b266785c45d7b601ca927188b1ce4..6045d3ac23ca08b29f01fc33c927ad8881643bc5 100644 (file)
   
     
       <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
-        <script src="../_static/jquery.js"></script>
-        <script src="../_static/underscore.js"></script>
-        <script src="../_static/doctools.js"></script>
-        <script src="../_static/language_data.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
     
     <script type="text/javascript" src="../_static/js/theme.js"></script>
 
@@ -92,9 +92,9 @@
 <li class="toctree-l2"><a class="reference internal" href="index_basics.html">Basics</a></li>
 <li class="toctree-l2 current"><a class="reference internal" href="index_data.html">Working with Data</a><ul class="current">
 <li class="toctree-l3"><a class="reference internal" href="memcached_auto.html">Incrementing and Decrementing Values</a></li>
-<li class="toctree-l3"><a class="reference internal" href="memcached_exist.html">Determine if a keys exists.</a></li>
-<li class="toctree-l3"><a class="reference internal" href="memcached_touch.html">memcached_touch, memcached_touch_by_key</a></li>
-<li class="toctree-l3"><a class="reference internal" href="memcached_flush_buffers.html">Flushing client buffers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="memcached_exist.html">Determine if a keys exists</a></li>
+<li class="toctree-l3"><a class="reference internal" href="memcached_touch.html">Update expiration on a key</a></li>
+<li class="toctree-l3"><a class="reference internal" href="memcached_flush_buffers.html">Flush and send buffered commands</a></li>
 <li class="toctree-l3"><a class="reference internal" href="memcached_result_st.html">Working with result sets</a></li>
 <li class="toctree-l3"><a class="reference internal" href="memcached_append.html">Appending or Prepending Data</a></li>
 <li class="toctree-l3 current"><a class="current reference internal" href="#">Working with data on the server in an atomic fashion</a></li>
 <h1>Working with data on the server in an atomic fashion<a class="headerlink" href="#working-with-data-on-the-server-in-an-atomic-fashion" title="Permalink to this headline">¶</a></h1>
 <div class="section" id="synopsis">
 <h2>SYNOPSIS<a class="headerlink" href="#synopsis" title="Permalink to this headline">¶</a></h2>
-<dl class="simple">
-<dt>#include &lt;libmemcached/memcached.h&gt;</dt><dd><p>Compile and link with -lmemcached</p>
-</dd>
+<dl class="docutils">
+<dt>#include &lt;libmemcached/memcached.h&gt;</dt>
+<dd>Compile and link with -lmemcached</dd>
 </dl>
-<dl class="cpp function">
+<dl class="function">
 <dt id="_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t">
-<span id="_CPPv313memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="_CPPv213memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="memcached_cas__memcached_stP.cCP.s.cCP.s.time_t.uint32_t.uint64_t"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="sig-name descname">memcached_cas</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <em class="property">const</em> char *<em>key</em>, size_t <em>key_length</em>, <em class="property">const</em> char *<em>value</em>, size_t <em>value_length</em>, time_t <em>expiration</em>, uint32_t <em>flags</em>, uint64_t <em>cas</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="Permalink to this definition">¶</a><br /></dt>
+<span id="_CPPv313memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="_CPPv213memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="memcached_cas__memcached_stP.cCP.s.cCP.s.time_t.uint32_t.uint64_t"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="descname">memcached_cas</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <em class="property">const</em> char *<em>key</em>, size_t <em>key_length</em>, <em class="property">const</em> char *<em>value</em>, size_t <em>value_length</em>, time_t <em>expiration</em>, uint32_t <em>flags</em>, uint64_t <em>cas</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="Permalink to this definition">¶</a><br /></dt>
 <dd></dd></dl>
 
-<dl class="cpp function">
+<dl class="function">
 <dt id="_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t">
-<span id="_CPPv320memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="_CPPv220memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="memcached_cas_by_key__memcached_stP.cCP.s.cCP.s.cCP.s.time_t.uint32_t.uint64_t"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="sig-name descname">memcached_cas_by_key</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <em class="property">const</em> char *<em>group_key</em>, size_t <em>group_key_length</em>, <em class="property">const</em> char *<em>key</em>, size_t <em>key_length</em>, <em class="property">const</em> char *<em>value</em>, size_t <em>value_length</em>, time_t <em>expiration</em>, uint32_t <em>flags</em>, uint64_t <em>cas</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="Permalink to this definition">¶</a><br /></dt>
-<dd></dd></dl>
+<span id="_CPPv320memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="_CPPv220memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="memcached_cas_by_key__memcached_stP.cCP.s.cCP.s.cCP.s.time_t.uint32_t.uint64_t"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="descname">memcached_cas_by_key</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <em class="property">const</em> char *<em>group_key</em>, size_t <em>group_key_length</em>, <em class="property">const</em> char *<em>key</em>, size_t <em>key_length</em>, <em class="property">const</em> char *<em>value</em>, size_t <em>value_length</em>, time_t <em>expiration</em>, uint32_t <em>flags</em>, uint64_t <em>cas</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="Permalink to this definition">¶</a><br /></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>ptr</strong> -- pointer to an initialized <a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_st</span></code></a> struct</li>
+<li><strong>group_key</strong> -- key namespace</li>
+<li><strong>group_key_length</strong> -- length of the <a class="reference internal" href="#_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas_by_key::group_key"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">group_key</span></code></a> without any trailing zero</li>
+<li><strong>key</strong> -- the key to check</li>
+<li><strong>key_length</strong> -- the length of the <a class="reference internal" href="#_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas_by_key::key"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">key</span></code></a> without any trailing zero</li>
+<li><strong>value</strong> -- the value to set</li>
+<li><strong>value_length</strong> -- the length of the <a class="reference internal" href="#_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas_by_key::value"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">value</span></code></a> without any trailing zero</li>
+<li><strong>expiration</strong> -- expiration time as unix timestamp or relative time in seconds</li>
+<li><strong>flags</strong> -- 16 bit flags</li>
+<li><strong>cas</strong> -- the <code class="docutils literal notranslate"><span class="pre">cas</span></code> value to compare</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_return_t</span></code></a> indicating success</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
 
 </div>
 <div class="section" id="description">
 <p><a class="reference internal" href="#_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_cas()</span></code></a> overwrites data in the server as long as the <code class="docutils literal notranslate"><span class="pre">cas</span></code> value is
 still the same in the server. You can get the <code class="docutils literal notranslate"><span class="pre">cas</span></code> value of a result by
 calling <a class="reference internal" href="memcached_result_st.html#_CPPv420memcached_result_casPK19memcached_result_st" title="memcached_result_cas"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_result_cas()</span></code></a> on a <a class="reference internal" href="memcached_result_st.html#_CPPv419memcached_result_st" title="memcached_result_st"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_result_st</span></code></a> structure.</p>
-<p>At the point that this note was written cas is still buggy in memcached. Turning
-on tests for it in <code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">libmemcached</span></code> is optional. Please see <a class="reference internal" href="memcached_set.html#_CPPv413memcached_setP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t" title="memcached_set"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_set()</span></code></a> for
-information on how to do this.</p>
 <p><a class="reference internal" href="#_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas_by_key"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_cas_by_key()</span></code></a> method behaves in a similar way as the non key methods.
 The difference is that it uses the <code class="docutils literal notranslate"><span class="pre">group_key</span></code> parameter to map objects to
 particular servers.</p>
-<p><a class="reference internal" href="#_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_cas()</span></code></a> is tested with the <code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_BEHAVIOR_USE_UDP</span></code> behavior
+<p><a class="reference internal" href="#_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_cas()</span></code></a> is tested with the <a class="reference internal" href="memcached_behavior.html#_CPPv4N20memcached_behavior_t26MEMCACHED_BEHAVIOR_USE_UDPE" title="MEMCACHED_BEHAVIOR_USE_UDP"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_BEHAVIOR_USE_UDP</span></code></a> behavior
 enabled. However, when using these operations with this behavior on, there are
 limits to the size of the payload being sent to the server.  The reason for
 these limits is that the Memcached Server does not allow multi-datagram requests
@@ -228,7 +248,7 @@ and the current server implementation sets a datagram size to 1400 bytes. Due to
 protocol overhead, the actual limit of the user supplied data is less than 1400
 bytes and depends on the protocol in use as, well as the operation being
 executed. When running with the binary protocol,
-<code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_BEHAVIOR_BINARY_PROTOCOL</span></code>, the size of the key,value, flags and
+<a class="reference internal" href="memcached_behavior.html#_CPPv4N20memcached_behavior_t34MEMCACHED_BEHAVIOR_BINARY_PROTOCOLE" title="MEMCACHED_BEHAVIOR_BINARY_PROTOCOL"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_BEHAVIOR_BINARY_PROTOCOL</span></code></a>, the size of the key,value, flags and
 expiry combined may not exceed 1368 bytes. When running with the ASCII protocol,
 the exact limit fluctuates depending on which function is being executed and
 whether the function is a cas operation or not. For non-cas ASCII set
@@ -248,11 +268,11 @@ string.</p>
 <div class="section" id="see-also">
 <h2>SEE ALSO<a class="headerlink" href="#see-also" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
-<li><p><em class="manpage"><a class="manpage reference external" href="https://linux.die.net/man/1/memcached">memcached(1)</a></em></p></li>
-<li><p><a class="reference internal" href="../libmemcached.html"><span class="doc">C/C++ Client Library for memcached</span></a></p></li>
-<li><p><a class="reference internal" href="memcached_set.html"><span class="doc">Storing data on the server</span></a></p></li>
-<li><p><a class="reference internal" href="memcached_append.html"><span class="doc">Appending or Prepending Data</span></a></p></li>
-<li><p><a class="reference internal" href="memcached_strerror.html"><span class="doc">Converting Error Codes to Messages</span></a></p></li>
+<li><em class="manpage"><a class="manpage reference external" href="https://linux.die.net/man/1/memcached">memcached(1)</a></em></li>
+<li><a class="reference internal" href="../libmemcached.html"><span class="doc">C/C++ Client Library for memcached</span></a></li>
+<li><a class="reference internal" href="memcached_set.html"><span class="doc">Storing data on the server</span></a></li>
+<li><a class="reference internal" href="memcached_append.html"><span class="doc">Appending or Prepending Data</span></a></li>
+<li><a class="reference internal" href="memcached_strerror.html"><span class="doc">Converting Error Codes to Messages</span></a></li>
 </ul>
 </div>
 </div>