summaryrefslogtreecommitdiff
path: root/memcached_8h-source.html
diff options
context:
space:
mode:
Diffstat (limited to 'memcached_8h-source.html')
-rw-r--r--memcached_8h-source.html708
1 files changed, 354 insertions, 354 deletions
diff --git a/memcached_8h-source.html b/memcached_8h-source.html
index 6aba5ea..796ebe5 100644
--- a/memcached_8h-source.html
+++ b/memcached_8h-source.html
@@ -36,361 +36,361 @@
<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;pthread.h&gt;</span>
<a name="l00021"></a>00021
<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="protocol__binary_8h.html">protocol_binary.h</a>"</span>
-<a name="l00023"></a>00023
-<a name="l00025"></a><a class="code" href="memcached_8h.html#a5fda8abf3b5d8881d799a8b84091c6c">00025</a> <span class="preprocessor">#define KEY_MAX_LENGTH 250</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span>
-<a name="l00027"></a><a class="code" href="memcached_8h.html#b723c5f0e9759c70ed582dfd77431ff7">00027</a> <span class="preprocessor">#define DATA_BUFFER_SIZE 2048</span>
-<a name="l00028"></a><a class="code" href="memcached_8h.html#05df0398f9b0815a685d15f36fa809c7">00028</a> <span class="preprocessor"></span><span class="preprocessor">#define UDP_READ_BUFFER_SIZE 65536</span>
-<a name="l00029"></a><a class="code" href="memcached_8h.html#deea76d049af191b881f2d58eca532ca">00029</a> <span class="preprocessor"></span><span class="preprocessor">#define UDP_MAX_PAYLOAD_SIZE 1400</span>
-<a name="l00030"></a><a class="code" href="memcached_8h.html#8a0fae83e487dc04b3cd774b3d4ee637">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define UDP_HEADER_SIZE 8</span>
-<a name="l00031"></a><a class="code" href="memcached_8h.html#39626d37ee23d63b65a51cced19569af">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define MAX_SENDBUF_SIZE (256 * 1024 * 1024)</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="comment">/* I'm told the max length of a 64-bit num converted to string is 20 bytes.</span>
-<a name="l00033"></a>00033 <span class="comment"> * Plus a few for spaces, \r\n, \0 */</span>
-<a name="l00034"></a><a class="code" href="memcached_8h.html#c11cfc1c764d31993bf747dcb16c45c5">00034</a> <span class="preprocessor">#define SUFFIX_SIZE 24</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span>
-<a name="l00037"></a><a class="code" href="memcached_8h.html#67fead4b33f125ae7873422d8d8dcdfb">00037</a> <span class="preprocessor">#define ITEM_LIST_INITIAL 200</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span>
-<a name="l00040"></a><a class="code" href="memcached_8h.html#ad50a115f190cb796d5a25b910d62ac8">00040</a> <span class="preprocessor">#define SUFFIX_LIST_INITIAL 20</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span>
-<a name="l00043"></a><a class="code" href="memcached_8h.html#18ce3212ea76fbc1de1fe2d34f4b8c7e">00043</a> <span class="preprocessor">#define IOV_LIST_INITIAL 400</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span>
-<a name="l00046"></a><a class="code" href="memcached_8h.html#04e8d0719aba6a59ac6cb0b3ed202f95">00046</a> <span class="preprocessor">#define MSG_LIST_INITIAL 10</span>
-<a name="l00047"></a>00047 <span class="preprocessor"></span>
-<a name="l00049"></a><a class="code" href="memcached_8h.html#14d2f1d60a85984e1e0667cbefb620fc">00049</a> <span class="preprocessor">#define READ_BUFFER_HIGHWAT 8192</span>
-<a name="l00050"></a><a class="code" href="memcached_8h.html#d956eb982df5bd7acbda28c721b41eaa">00050</a> <span class="preprocessor"></span><span class="preprocessor">#define ITEM_LIST_HIGHWAT 400</span>
-<a name="l00051"></a><a class="code" href="memcached_8h.html#caa0d98800d7b0731fe95772fe298bd0">00051</a> <span class="preprocessor"></span><span class="preprocessor">#define IOV_LIST_HIGHWAT 600</span>
-<a name="l00052"></a><a class="code" href="memcached_8h.html#78cce1eb067f697c57755dee6475f59d">00052</a> <span class="preprocessor"></span><span class="preprocessor">#define MSG_LIST_HIGHWAT 100</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span>
-<a name="l00054"></a>00054 <span class="comment">/* Binary protocol stuff */</span>
-<a name="l00055"></a><a class="code" href="memcached_8h.html#811c6b700b56f87244029a6136cedf29">00055</a> <span class="preprocessor">#define MIN_BIN_PKT_LENGTH 16</span>
-<a name="l00056"></a><a class="code" href="memcached_8h.html#52e0174a1089d9beba9b4007b96fd647">00056</a> <span class="preprocessor"></span><span class="preprocessor">#define BIN_PKT_HDR_WORDS (MIN_BIN_PKT_LENGTH/sizeof(uint32_t))</span>
-<a name="l00057"></a>00057 <span class="preprocessor"></span>
-<a name="l00058"></a>00058 <span class="comment">/* unistd.h is here */</span>
-<a name="l00059"></a>00059 <span class="preprocessor">#if HAVE_UNISTD_H</span>
-<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor"># include &lt;unistd.h&gt;</span>
-<a name="l00061"></a>00061 <span class="preprocessor">#endif</span>
-<a name="l00062"></a>00062 <span class="preprocessor"></span>
-<a name="l00063"></a>00063 <span class="comment">/* Slab sizing definitions. */</span>
-<a name="l00064"></a><a class="code" href="memcached_8h.html#3be25b5d15a433c400ec50d2c9d858b9">00064</a> <span class="preprocessor">#define POWER_SMALLEST 1</span>
-<a name="l00065"></a><a class="code" href="memcached_8h.html#0f6e848eba50c148da7a61eb94061c3c">00065</a> <span class="preprocessor"></span><span class="preprocessor">#define POWER_LARGEST 200</span>
-<a name="l00066"></a><a class="code" href="memcached_8h.html#1000923632a496e81e50102c2694db41">00066</a> <span class="preprocessor"></span><span class="preprocessor">#define POWER_BLOCK 1048576</span>
-<a name="l00067"></a><a class="code" href="memcached_8h.html#8cd56df53d2341debe15fafe411515a6">00067</a> <span class="preprocessor"></span><span class="preprocessor">#define CHUNK_ALIGN_BYTES 8</span>
-<a name="l00068"></a><a class="code" href="memcached_8h.html#d6e30718df50c9991afd87dc619c851f">00068</a> <span class="preprocessor"></span><span class="preprocessor">#define DONT_PREALLOC_SLABS</span>
-<a name="l00069"></a><a class="code" href="memcached_8h.html#e8e332c92e566cf3b38a8a7e3d08eafe">00069</a> <span class="preprocessor"></span><span class="preprocessor">#define MAX_NUMBER_OF_SLAB_CLASSES (POWER_LARGEST + 1)</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span>
-<a name="l00073"></a><a class="code" href="memcached_8h.html#421b08fd9fc3d24db6d39014c02f66bb">00073</a> <span class="preprocessor">#define TAIL_REPAIR_TIME (3 * 3600)</span>
-<a name="l00074"></a>00074 <span class="preprocessor"></span>
-<a name="l00076"></a><a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4">00076</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a>;
-<a name="l00077"></a>00077
-<a name="l00079"></a><a class="code" href="structslab__stats.html">00079</a> <span class="keyword">struct </span><a class="code" href="structslab__stats.html" title="Stats stored per slab (and per thread).">slab_stats</a> {
-<a name="l00080"></a><a class="code" href="structslab__stats.html#4da67cc4f2297d79e69e3805f42c90b7">00080</a> uint64_t <a class="code" href="structslab__stats.html#4da67cc4f2297d79e69e3805f42c90b7">set_cmds</a>;
-<a name="l00081"></a><a class="code" href="structslab__stats.html#7bc073fa35375d23129eab883ff2b633">00081</a> uint64_t <a class="code" href="structslab__stats.html#7bc073fa35375d23129eab883ff2b633">get_hits</a>;
-<a name="l00082"></a><a class="code" href="structslab__stats.html#269423b43063e97b7ecdd16347f38cb4">00082</a> uint64_t <a class="code" href="structslab__stats.html#269423b43063e97b7ecdd16347f38cb4">delete_hits</a>;
-<a name="l00083"></a><a class="code" href="structslab__stats.html#391924745fcae79874c492f9db29f6e5">00083</a> uint64_t <a class="code" href="structslab__stats.html#391924745fcae79874c492f9db29f6e5">cas_hits</a>;
-<a name="l00084"></a><a class="code" href="structslab__stats.html#f7dc635cd3086d46d93cfd44e3a6c3e7">00084</a> uint64_t <a class="code" href="structslab__stats.html#f7dc635cd3086d46d93cfd44e3a6c3e7">cas_badval</a>;
-<a name="l00085"></a><a class="code" href="structslab__stats.html#a184357792689748e228095f17f9e83c">00085</a> uint64_t <a class="code" href="structslab__stats.html#a184357792689748e228095f17f9e83c">incr_hits</a>;
-<a name="l00086"></a><a class="code" href="structslab__stats.html#08355226ee7038716958682338fdbdda">00086</a> uint64_t <a class="code" href="structslab__stats.html#08355226ee7038716958682338fdbdda">decr_hits</a>;
-<a name="l00087"></a>00087 };
-<a name="l00088"></a>00088
-<a name="l00092"></a><a class="code" href="structthread__stats.html">00092</a> <span class="keyword">struct </span><a class="code" href="structthread__stats.html" title="Stats stored per-thread.">thread_stats</a> {
-<a name="l00093"></a><a class="code" href="structthread__stats.html#656e2f3c52c764e6bbba2c8de29ae812">00093</a> pthread_mutex_t <a class="code" href="structthread__stats.html#656e2f3c52c764e6bbba2c8de29ae812">mutex</a>;
-<a name="l00094"></a><a class="code" href="structthread__stats.html#ffa01fa8b4974f4839122424c1bb2fc3">00094</a> uint64_t <a class="code" href="structthread__stats.html#ffa01fa8b4974f4839122424c1bb2fc3">get_cmds</a>;
-<a name="l00095"></a><a class="code" href="structthread__stats.html#cc592fd8da9cdd9a227c59f8ba346fb5">00095</a> uint64_t <a class="code" href="structthread__stats.html#cc592fd8da9cdd9a227c59f8ba346fb5">get_misses</a>;
-<a name="l00096"></a><a class="code" href="structthread__stats.html#eb08e5cab194e1337007464c42fbbbdf">00096</a> uint64_t <a class="code" href="structthread__stats.html#eb08e5cab194e1337007464c42fbbbdf">delete_misses</a>;
-<a name="l00097"></a><a class="code" href="structthread__stats.html#9d783773df9a1163f1475fe10e4d2838">00097</a> uint64_t <a class="code" href="structthread__stats.html#9d783773df9a1163f1475fe10e4d2838">incr_misses</a>;
-<a name="l00098"></a><a class="code" href="structthread__stats.html#f5376d1206b9e71cbff2dab81e930d28">00098</a> uint64_t <a class="code" href="structthread__stats.html#f5376d1206b9e71cbff2dab81e930d28">decr_misses</a>;
-<a name="l00099"></a><a class="code" href="structthread__stats.html#daaed26081651c8236b1cc5b4f4748ec">00099</a> uint64_t <a class="code" href="structthread__stats.html#daaed26081651c8236b1cc5b4f4748ec">cas_misses</a>;
-<a name="l00100"></a><a class="code" href="structthread__stats.html#78b389a507be8c78d2757b79c6b2069d">00100</a> uint64_t <a class="code" href="structthread__stats.html#78b389a507be8c78d2757b79c6b2069d">bytes_read</a>;
-<a name="l00101"></a><a class="code" href="structthread__stats.html#fff437fd1fcac940ffd2fa44d3182838">00101</a> uint64_t <a class="code" href="structthread__stats.html#fff437fd1fcac940ffd2fa44d3182838">bytes_written</a>;
-<a name="l00102"></a><a class="code" href="structthread__stats.html#8f4915ca2892f21641a126951660b625">00102</a> uint64_t <a class="code" href="structthread__stats.html#8f4915ca2892f21641a126951660b625">flush_cmds</a>;
-<a name="l00103"></a><a class="code" href="structthread__stats.html#efc242998efe6318a32510565acbcb01">00103</a> <span class="keyword">struct </span><a class="code" href="structslab__stats.html" title="Stats stored per slab (and per thread).">slab_stats</a> <a class="code" href="structslab__stats.html" title="Stats stored per slab (and per thread).">slab_stats</a>[<a class="code" href="memcached_8h.html#e8e332c92e566cf3b38a8a7e3d08eafe">MAX_NUMBER_OF_SLAB_CLASSES</a>];
-<a name="l00104"></a>00104 };
-<a name="l00105"></a>00105
-<a name="l00109"></a><a class="code" href="structstats.html">00109</a> <span class="keyword">struct </span><a class="code" href="structstats.html" title="Global stats.">stats</a> {
-<a name="l00110"></a><a class="code" href="structstats.html#a1da24a4ab04ced93a99433d2914ed96">00110</a> pthread_mutex_t <a class="code" href="structstats.html#a1da24a4ab04ced93a99433d2914ed96">mutex</a>;
-<a name="l00111"></a><a class="code" href="structstats.html#7e27973d723b2bb83265f1324b6265d5">00111</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#7e27973d723b2bb83265f1324b6265d5">curr_items</a>;
-<a name="l00112"></a><a class="code" href="structstats.html#f4feaf763564d06ef80569941f31b641">00112</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#f4feaf763564d06ef80569941f31b641">total_items</a>;
-<a name="l00113"></a><a class="code" href="structstats.html#16d174f23f4b8e48c3dc2557f2db7750">00113</a> uint64_t <a class="code" href="structstats.html#16d174f23f4b8e48c3dc2557f2db7750">curr_bytes</a>;
-<a name="l00114"></a><a class="code" href="structstats.html#1c0edacbfc2610977c9d1c6a675be6bb">00114</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#1c0edacbfc2610977c9d1c6a675be6bb">curr_conns</a>;
-<a name="l00115"></a><a class="code" href="structstats.html#4b4ee0d2ac0f6c34246f459cb9af20cd">00115</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#4b4ee0d2ac0f6c34246f459cb9af20cd">total_conns</a>;
-<a name="l00116"></a><a class="code" href="structstats.html#444566021e240f7552b946e7516d6ebe">00116</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#444566021e240f7552b946e7516d6ebe">conn_structs</a>;
-<a name="l00117"></a><a class="code" href="structstats.html#990bacf5404f31f17a6dafc465a2b775">00117</a> uint64_t <a class="code" href="structstats.html#990bacf5404f31f17a6dafc465a2b775">get_cmds</a>;
-<a name="l00118"></a><a class="code" href="structstats.html#53ccb9f0a724b936ad00f9af020dd6a0">00118</a> uint64_t <a class="code" href="structstats.html#53ccb9f0a724b936ad00f9af020dd6a0">set_cmds</a>;
-<a name="l00119"></a><a class="code" href="structstats.html#12c881743d5b3afd0a4ab18b29a413c9">00119</a> uint64_t <a class="code" href="structstats.html#12c881743d5b3afd0a4ab18b29a413c9">get_hits</a>;
-<a name="l00120"></a><a class="code" href="structstats.html#1802ea50eb0aab84ab3e923dd53d294e">00120</a> uint64_t <a class="code" href="structstats.html#1802ea50eb0aab84ab3e923dd53d294e">get_misses</a>;
-<a name="l00121"></a><a class="code" href="structstats.html#cecd3ccfa807a4fb7deb5be5e174a6fc">00121</a> uint64_t <a class="code" href="structstats.html#cecd3ccfa807a4fb7deb5be5e174a6fc">evictions</a>;
-<a name="l00122"></a><a class="code" href="structstats.html#baf2f10d93dcc5aef7c8ca46c3c52e0b">00122</a> time_t <a class="code" href="structstats.html#baf2f10d93dcc5aef7c8ca46c3c52e0b">started</a>; <span class="comment">/* when the process was started */</span>
-<a name="l00123"></a><a class="code" href="structstats.html#ed0a44d59a6fc1d01dca4639414905a0">00123</a> <span class="keywordtype">bool</span> <a class="code" href="structstats.html#ed0a44d59a6fc1d01dca4639414905a0">accepting_conns</a>; <span class="comment">/* whether we are currently accepting */</span>
-<a name="l00124"></a><a class="code" href="structstats.html#7cce50f30bfeebca79e4fb3c36def765">00124</a> uint64_t <a class="code" href="structstats.html#7cce50f30bfeebca79e4fb3c36def765">listen_disabled_num</a>;
-<a name="l00125"></a>00125 };
-<a name="l00126"></a>00126
-<a name="l00127"></a><a class="code" href="memcached_8h.html#6d56e2cd35fd2a8391a19abba528f353">00127</a> <span class="preprocessor">#define MAX_VERBOSITY_LEVEL 2</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span>
-<a name="l00129"></a>00129 <span class="comment">/* When adding a setting, be sure to update process_stat_settings */</span>
-<a name="l00133"></a><a class="code" href="structsettings.html">00133</a> <span class="keyword">struct </span><a class="code" href="structsettings.html" title="Globally accessible settings as derived from the commandline.">settings</a> {
-<a name="l00134"></a><a class="code" href="structsettings.html#9e462ca2f9a0531d782cd24f2e51354f">00134</a> <span class="keywordtype">size_t</span> <a class="code" href="structsettings.html#9e462ca2f9a0531d782cd24f2e51354f">maxbytes</a>;
-<a name="l00135"></a><a class="code" href="structsettings.html#661321f255edb678a4b8a52e909b4acf">00135</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#661321f255edb678a4b8a52e909b4acf">maxconns</a>;
-<a name="l00136"></a><a class="code" href="structsettings.html#20fa1e33e54d255f4f5e3df2da3e64ef">00136</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#20fa1e33e54d255f4f5e3df2da3e64ef">port</a>;
-<a name="l00137"></a><a class="code" href="structsettings.html#1a574901d729a109bd3156885c96e37e">00137</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#1a574901d729a109bd3156885c96e37e">udpport</a>;
-<a name="l00138"></a><a class="code" href="structsettings.html#3077457f2ff945dbc779ec42c44dfb08">00138</a> <span class="keywordtype">char</span> *<a class="code" href="structsettings.html#3077457f2ff945dbc779ec42c44dfb08">inter</a>;
-<a name="l00139"></a><a class="code" href="structsettings.html#8cfab16abb0cfc28ce1244c48bacdb6e">00139</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#8cfab16abb0cfc28ce1244c48bacdb6e">verbose</a>;
-<a name="l00140"></a><a class="code" href="structsettings.html#df482d13739658b54ac96c6eadba8bc6">00140</a> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> <a class="code" href="structsettings.html#df482d13739658b54ac96c6eadba8bc6">oldest_live</a>; <span class="comment">/* ignore existing items older than this */</span>
-<a name="l00141"></a><a class="code" href="structsettings.html#d168c4ce8bca42ce8f7b0ba8b66fba1a">00141</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#d168c4ce8bca42ce8f7b0ba8b66fba1a">evict_to_free</a>;
-<a name="l00142"></a><a class="code" href="structsettings.html#4c283e7be93d2eb0e7af366abc360ba7">00142</a> <span class="keywordtype">char</span> *<a class="code" href="structsettings.html#4c283e7be93d2eb0e7af366abc360ba7">socketpath</a>; <span class="comment">/* path to unix socket if using local socket */</span>
-<a name="l00143"></a><a class="code" href="structsettings.html#f277fc65f2ad1e28b75305e1b4366b8a">00143</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#f277fc65f2ad1e28b75305e1b4366b8a">access</a>; <span class="comment">/* access mask (a la chmod) for unix domain socket */</span>
-<a name="l00144"></a><a class="code" href="structsettings.html#a0c4be9f40fe18de45a3ee9bb9fda8a6">00144</a> <span class="keywordtype">double</span> <a class="code" href="structsettings.html#a0c4be9f40fe18de45a3ee9bb9fda8a6">factor</a>; <span class="comment">/* chunk size growth factor */</span>
-<a name="l00145"></a><a class="code" href="structsettings.html#59bb385a05df23defc39f23a4b95b2be">00145</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#59bb385a05df23defc39f23a4b95b2be">chunk_size</a>;
-<a name="l00146"></a><a class="code" href="structsettings.html#b7886bf6034656be4f274719e2f6c4a1">00146</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#b7886bf6034656be4f274719e2f6c4a1">num_threads</a>; <span class="comment">/* number of libevent threads to run */</span>
-<a name="l00147"></a><a class="code" href="structsettings.html#3f7e4aa1d7561b994111a9e47f82f1bb">00147</a> <span class="keywordtype">char</span> <a class="code" href="structsettings.html#3f7e4aa1d7561b994111a9e47f82f1bb">prefix_delimiter</a>; <span class="comment">/* character that marks a key prefix (for stats) */</span>
-<a name="l00148"></a><a class="code" href="structsettings.html#b49cd2e86b9b26f407fe76569560a9df">00148</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#b49cd2e86b9b26f407fe76569560a9df">detail_enabled</a>; <span class="comment">/* nonzero if we're collecting detailed stats */</span>
-<a name="l00149"></a><a class="code" href="structsettings.html#85ffd37171524861e0e384bb5c607e17">00149</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#85ffd37171524861e0e384bb5c607e17">reqs_per_event</a>; <span class="comment">/* Maximum number of io to process on each</span>
-<a name="l00150"></a>00150 <span class="comment"> io-event. */</span>
-<a name="l00151"></a><a class="code" href="structsettings.html#df2782217e9e89322915fb32fee95880">00151</a> <span class="keywordtype">bool</span> <a class="code" href="structsettings.html#df2782217e9e89322915fb32fee95880">use_cas</a>;
-<a name="l00152"></a><a class="code" href="structsettings.html#f38c63a2526c784f539575bf15525ca2">00152</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#f38c63a2526c784f539575bf15525ca2">backlog</a>;
-<a name="l00153"></a>00153 };
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="keyword">extern</span> <span class="keyword">struct </span><a class="code" href="structstats.html" title="Global stats.">stats</a> <a class="code" href="structstats.html" title="Global stats.">stats</a>;
-<a name="l00156"></a>00156 <span class="keyword">extern</span> time_t <a class="code" href="memcached_8c.html#584cbee39bbab65f2c8d87932cf92140">process_started</a>;
-<a name="l00157"></a>00157 <span class="keyword">extern</span> <span class="keyword">struct </span><a class="code" href="structsettings.html" title="Globally accessible settings as derived from the commandline.">settings</a> <a class="code" href="structsettings.html" title="Globally accessible settings as derived from the commandline.">settings</a>;
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="memcached_8h.html#0fdfa9fdfdd2d9cd25d7bd7ad6033e03">00159</a> <span class="preprocessor">#define ITEM_LINKED 1</span>
-<a name="l00160"></a><a class="code" href="memcached_8h.html#92c9e4680eee65905b0518321805430f">00160</a> <span class="preprocessor"></span><span class="preprocessor">#define ITEM_CAS 2</span>
-<a name="l00161"></a>00161 <span class="preprocessor"></span>
-<a name="l00162"></a>00162 <span class="comment">/* temp */</span>
-<a name="l00163"></a><a class="code" href="memcached_8h.html#0eac12291582819219bf0f6ce9124364">00163</a> <span class="preprocessor">#define ITEM_SLABBED 4</span>
-<a name="l00164"></a>00164 <span class="preprocessor"></span>
-<a name="l00168"></a><a class="code" href="struct__stritem.html">00168</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">_stritem</a> {
-<a name="l00169"></a><a class="code" href="struct__stritem.html#d7f5d4ca7eae6391b02a8e0d95c99b87">00169</a> <span class="keyword">struct </span><a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">_stritem</a> *<a class="code" href="struct__stritem.html#d7f5d4ca7eae6391b02a8e0d95c99b87">next</a>;
-<a name="l00170"></a><a class="code" href="struct__stritem.html#fcc1decef9e8c41fb64f4995462a08fa">00170</a> <span class="keyword">struct </span><a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">_stritem</a> *<a class="code" href="struct__stritem.html#fcc1decef9e8c41fb64f4995462a08fa">prev</a>;
-<a name="l00171"></a><a class="code" href="struct__stritem.html#cc3bc0ca62146131ad8ae8518545e11b">00171</a> <span class="keyword">struct </span><a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">_stritem</a> *<a class="code" href="struct__stritem.html#cc3bc0ca62146131ad8ae8518545e11b">h_next</a>; <span class="comment">/* hash chain next */</span>
-<a name="l00172"></a><a class="code" href="struct__stritem.html#7953b640eea943ce42644c00136cd462">00172</a> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> <a class="code" href="struct__stritem.html#7953b640eea943ce42644c00136cd462">time</a>; <span class="comment">/* least recent access */</span>
-<a name="l00173"></a><a class="code" href="struct__stritem.html#fd87174e4e2f16bf48a950ff28ba65d4">00173</a> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> <a class="code" href="struct__stritem.html#fd87174e4e2f16bf48a950ff28ba65d4">exptime</a>; <span class="comment">/* expire time */</span>
-<a name="l00174"></a><a class="code" href="struct__stritem.html#e718d73982b5d22c28887575e9e4dcd4">00174</a> <span class="keywordtype">int</span> <a class="code" href="struct__stritem.html#e718d73982b5d22c28887575e9e4dcd4">nbytes</a>; <span class="comment">/* size of data */</span>
-<a name="l00175"></a><a class="code" href="struct__stritem.html#f4b10743e972c424f170f3bbc277ded5">00175</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="struct__stritem.html#f4b10743e972c424f170f3bbc277ded5">refcount</a>;
-<a name="l00176"></a><a class="code" href="struct__stritem.html#d104597f204745473144018ef15c1459">00176</a> uint8_t <a class="code" href="struct__stritem.html#d104597f204745473144018ef15c1459">nsuffix</a>; <span class="comment">/* length of flags-and-length string */</span>
-<a name="l00177"></a><a class="code" href="struct__stritem.html#35e3398ad4aaed940e920c99157eca10">00177</a> uint8_t <a class="code" href="struct__stritem.html#35e3398ad4aaed940e920c99157eca10">it_flags</a>; <span class="comment">/* ITEM_* above */</span>
-<a name="l00178"></a><a class="code" href="struct__stritem.html#2b9111cab21baa2ee90bd8866e7be988">00178</a> uint8_t <a class="code" href="struct__stritem.html#2b9111cab21baa2ee90bd8866e7be988">slabs_clsid</a>;<span class="comment">/* which slab class we're in */</span>
-<a name="l00179"></a><a class="code" href="struct__stritem.html#5e19a37b7235464196b4155a46758ff4">00179</a> uint8_t <a class="code" href="struct__stritem.html#5e19a37b7235464196b4155a46758ff4">nkey</a>; <span class="comment">/* key length, w/terminating null and padding */</span>
-<a name="l00180"></a><a class="code" href="struct__stritem.html#c6f2eb9984981d107d1e339cad333f50">00180</a> <span class="keywordtype">void</span> * <a class="code" href="struct__stritem.html#c6f2eb9984981d107d1e339cad333f50">end</a>[];
-<a name="l00181"></a>00181 <span class="comment">/* if it_flags &amp; ITEM_CAS we have 8 bytes CAS */</span>
-<a name="l00182"></a>00182 <span class="comment">/* then null-terminated key */</span>
-<a name="l00183"></a>00183 <span class="comment">/* then " flags length\r\n" (no terminating null) */</span>
-<a name="l00184"></a>00184 <span class="comment">/* then data with terminating \r\n (no terminating null; it's binary!) */</span>
-<a name="l00185"></a>00185 } <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>;
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="comment">/* warning: don't use these macros with a function, as it evals its arg twice */</span>
-<a name="l00188"></a><a class="code" href="memcached_8h.html#b8e3564ae343cbe6a61e7d277fe0d849">00188</a> <span class="preprocessor">#define ITEM_get_cas(i) ((uint64_t)(((i)-&gt;it_flags &amp; ITEM_CAS) ? \</span>
-<a name="l00189"></a>00189 <span class="preprocessor"> *(uint64_t*)&amp;((i)-&gt;end[0]) : 0x0))</span>
-<a name="l00190"></a><a class="code" href="memcached_8h.html#906a01f2020378ebc543f3fac3a8de5c">00190</a> <span class="preprocessor"></span><span class="preprocessor">#define ITEM_set_cas(i,v) { if ((i)-&gt;it_flags &amp; ITEM_CAS) { \</span>
-<a name="l00191"></a>00191 <span class="preprocessor"> *(uint64_t*)&amp;((i)-&gt;end[0]) = v; } }</span>
-<a name="l00192"></a>00192 <span class="preprocessor"></span>
-<a name="l00193"></a><a class="code" href="memcached_8h.html#6f0bbc1b60dc6d44e4f33b7072c5c556">00193</a> <span class="preprocessor">#define ITEM_key(item) (((char*)&amp;((item)-&gt;end[0])) \</span>
-<a name="l00194"></a>00194 <span class="preprocessor"> + (((item)-&gt;it_flags &amp; ITEM_CAS) ? sizeof(uint64_t) : 0))</span>
-<a name="l00195"></a>00195 <span class="preprocessor"></span>
-<a name="l00196"></a><a class="code" href="memcached_8h.html#cc9266e9b04daa12e359eb6d6f052fc3">00196</a> <span class="preprocessor">#define ITEM_suffix(item) ((char*) &amp;((item)-&gt;end[0]) + (item)-&gt;nkey + 1 \</span>
-<a name="l00197"></a>00197 <span class="preprocessor"> + (((item)-&gt;it_flags &amp; ITEM_CAS) ? sizeof(uint64_t) : 0))</span>
-<a name="l00198"></a>00198 <span class="preprocessor"></span>
-<a name="l00199"></a><a class="code" href="memcached_8h.html#442889c7cb5c1ec39981f299331b4b29">00199</a> <span class="preprocessor">#define ITEM_data(item) ((char*) &amp;((item)-&gt;end[0]) + (item)-&gt;nkey + 1 \</span>
-<a name="l00200"></a>00200 <span class="preprocessor"> + (item)-&gt;nsuffix \</span>
-<a name="l00201"></a>00201 <span class="preprocessor"> + (((item)-&gt;it_flags &amp; ITEM_CAS) ? sizeof(uint64_t) : 0))</span>
-<a name="l00202"></a>00202 <span class="preprocessor"></span>
-<a name="l00203"></a><a class="code" href="memcached_8h.html#5c9d5467cfb934e32d0794afc596fded">00203</a> <span class="preprocessor">#define ITEM_ntotal(item) (sizeof(struct _stritem) + (item)-&gt;nkey + 1 \</span>
-<a name="l00204"></a>00204 <span class="preprocessor"> + (item)-&gt;nsuffix + (item)-&gt;nbytes \</span>
-<a name="l00205"></a>00205 <span class="preprocessor"> + (((item)-&gt;it_flags &amp; ITEM_CAS) ? sizeof(uint64_t) : 0))</span>
-<a name="l00206"></a>00206 <span class="preprocessor"></span>
-<a name="l00208"></a><a class="code" href="memcached_8h.html#76c2c7de1009374de65513d72f6e3e56">00208</a> <span class="preprocessor">#define APPEND_STAT(name, fmt, val) \</span>
-<a name="l00209"></a>00209 <span class="preprocessor"> append_stat(name, add_stats, c, fmt, val);</span>
-<a name="l00210"></a>00210 <span class="preprocessor"></span>
-<a name="l00213"></a><a class="code" href="memcached_8h.html#30ab71365faf0a05119b4705e26d81a8">00213</a> <span class="preprocessor">#define APPEND_NUM_FMT_STAT(name_fmt, num, name, fmt, val) \</span>
-<a name="l00214"></a>00214 <span class="preprocessor"> klen = sprintf(key_str, name_fmt, num, name); \</span>
-<a name="l00215"></a>00215 <span class="preprocessor"> vlen = sprintf(val_str, fmt, val); \</span>
-<a name="l00216"></a>00216 <span class="preprocessor"> add_stats(key_str, klen, val_str, vlen, c);</span>
-<a name="l00217"></a>00217 <span class="preprocessor"></span>
-<a name="l00219"></a><a class="code" href="memcached_8h.html#be2689982c5b4d28c7eb6151710f404d">00219</a> <span class="preprocessor">#define APPEND_NUM_STAT(num, name, fmt, val) \</span>
-<a name="l00220"></a>00220 <span class="preprocessor"> APPEND_NUM_FMT_STAT("%d:%s", num, name, fmt, val)</span>
-<a name="l00221"></a>00221 <span class="preprocessor"></span>
-<a name="l00231"></a><a class="code" href="memcached_8h.html#b8d9bd9ba0b7b765633bf9b6cbd6aa30">00231</a> <span class="keyword">typedef</span> void (*<a class="code" href="memcached_8h.html#b8d9bd9ba0b7b765633bf9b6cbd6aa30" title="Callback for any function producing stats.">ADD_STAT</a>)(<span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> uint16_t klen,
-<a name="l00232"></a>00232 <span class="keyword">const</span> <span class="keywordtype">char</span> *val, <span class="keyword">const</span> uint32_t vlen,
-<a name="l00233"></a>00233 <span class="keyword">const</span> <span class="keywordtype">void</span> *cookie);
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <span class="comment">/*</span>
-<a name="l00236"></a>00236 <span class="comment"> * NOTE: If you modify this table you _MUST_ update the function state_text</span>
-<a name="l00237"></a>00237 <span class="comment"> */</span>
-<a name="l00241"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7">00241</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> {
-<a name="l00242"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7b8f6ee6d7c37cbcd7062290e7f737dfa">00242</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7b8f6ee6d7c37cbcd7062290e7f737dfa" title="the socket which listens for connections">conn_listening</a>,
-<a name="l00243"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7471b58ebc7dca71b12cff6fc620d70ef">00243</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7471b58ebc7dca71b12cff6fc620d70ef" title="Prepare connection for next command.">conn_new_cmd</a>,
-<a name="l00244"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a745b0d57ee61815e8785958115727bcd6">00244</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a745b0d57ee61815e8785958115727bcd6" title="waiting for a readable socket">conn_waiting</a>,
-<a name="l00245"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a70fba4717ce3bd2ef568d54994adf8d39">00245</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a70fba4717ce3bd2ef568d54994adf8d39" title="reading in a command line">conn_read</a>,
-<a name="l00246"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7d1037eff7d3fdbb41b18a4f2318c04e4">00246</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7d1037eff7d3fdbb41b18a4f2318c04e4" title="try to parse a command from the input buffer">conn_parse_cmd</a>,
-<a name="l00247"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7cbae1e2e254af99276db29687b1c1594">00247</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7cbae1e2e254af99276db29687b1c1594" title="writing out a simple response">conn_write</a>,
-<a name="l00248"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a77bd90fbd58a0d585b4dbb133df716ba9">00248</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a77bd90fbd58a0d585b4dbb133df716ba9" title="reading in a fixed number of bytes">conn_nread</a>,
-<a name="l00249"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a77f3423d135032e6efd97a54256e0d990">00249</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a77f3423d135032e6efd97a54256e0d990" title="swallowing unnecessary bytes w/o storing">conn_swallow</a>,
-<a name="l00250"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7baf6f3e6a12460ae0b11c5dc984def13">00250</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7baf6f3e6a12460ae0b11c5dc984def13" title="closing this connection">conn_closing</a>,
-<a name="l00251"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a74cc089a47b08dead789981192fb85bca">00251</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a74cc089a47b08dead789981192fb85bca" title="writing out many items sequentially">conn_mwrite</a>,
-<a name="l00252"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7ca81038536eb0d4020afb6ef63c1d21d">00252</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7ca81038536eb0d4020afb6ef63c1d21d" title="Max state value (used for assertion).">conn_max_state</a>
-<a name="l00253"></a>00253 };
-<a name="l00254"></a>00254
-<a name="l00255"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7">00255</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7">bin_substates</a> {
-<a name="l00256"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7cef6c433a3f788f6496712ff3863ed81">00256</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7cef6c433a3f788f6496712ff3863ed81">bin_no_state</a>,
-<a name="l00257"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c79ab816e3175ec539a708893697ccb9d8">00257</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c79ab816e3175ec539a708893697ccb9d8">bin_reading_set_header</a>,
-<a name="l00258"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c73e3d8313972488ac21259efabdc55e6b">00258</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c73e3d8313972488ac21259efabdc55e6b">bin_reading_cas_header</a>,
-<a name="l00259"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7d06ff8b91c2992cc00a729781a27a60b">00259</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7d06ff8b91c2992cc00a729781a27a60b">bin_read_set_value</a>,
-<a name="l00260"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c71475f54a5df58e452a485e0fdece93dc">00260</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c71475f54a5df58e452a485e0fdece93dc">bin_reading_get_key</a>,
-<a name="l00261"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7e16889ae613bfb54c7b620a8ffc4155b">00261</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7e16889ae613bfb54c7b620a8ffc4155b">bin_reading_stat</a>,
-<a name="l00262"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7ed8eb46134a61812268a752a532686d7">00262</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7ed8eb46134a61812268a752a532686d7">bin_reading_del_header</a>,
-<a name="l00263"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c711010d81960b20927d416a9ff93400d2">00263</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c711010d81960b20927d416a9ff93400d2">bin_reading_incr_header</a>,
-<a name="l00264"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7a4f0970d48aa5e8389a987a590f51fd1">00264</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7a4f0970d48aa5e8389a987a590f51fd1">bin_read_flush_exptime</a>
-<a name="l00265"></a>00265 };
-<a name="l00266"></a>00266
-<a name="l00267"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">00267</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a> {
-<a name="l00268"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd4ea4e26ca73d727186948986255b7ee1">00268</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd4ea4e26ca73d727186948986255b7ee1">ascii_prot</a> = 3, <span class="comment">/* arbitrary value. */</span>
-<a name="l00269"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd013efd3024d75e93d9fbd7109e387ac5">00269</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd013efd3024d75e93d9fbd7109e387ac5">ascii_udp_prot</a>,
-<a name="l00270"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cda690b1bac2d1cb639ad1cae78b34e00a">00270</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cda690b1bac2d1cb639ad1cae78b34e00a">binary_prot</a>,
-<a name="l00271"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cdf80e49eae5478cb0ec774eb4c6f691e5">00271</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cdf80e49eae5478cb0ec774eb4c6f691e5">negotiating_prot</a> <span class="comment">/* Discovering the protocol */</span>
-<a name="l00272"></a>00272 };
-<a name="l00273"></a>00273
-<a name="l00274"></a><a class="code" href="memcached_8h.html#e7d628501377024bde05056f4af112bb">00274</a> <span class="preprocessor">#define IS_UDP(x) (x == ascii_udp_prot)</span>
-<a name="l00275"></a>00275 <span class="preprocessor"></span>
-<a name="l00276"></a><a class="code" href="memcached_8h.html#2beaf4cbf661902595987c951dca81b5">00276</a> <span class="preprocessor">#define NREAD_ADD 1</span>
-<a name="l00277"></a><a class="code" href="memcached_8h.html#fbe0384d1c4c682750a250c53a4360b6">00277</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_SET 2</span>
-<a name="l00278"></a><a class="code" href="memcached_8h.html#cf25e0ecbffb495dfedf760dde07d729">00278</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_REPLACE 3</span>
-<a name="l00279"></a><a class="code" href="memcached_8h.html#ceae72061dd3619d8fb95e33bae0b8e8">00279</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_APPEND 4</span>
-<a name="l00280"></a><a class="code" href="memcached_8h.html#fbaf99dc7e4b0e86f91e8e44da33a5c1">00280</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_PREPEND 5</span>
-<a name="l00281"></a><a class="code" href="memcached_8h.html#efa2deecfd52be7f36ed92e857a5a134">00281</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_CAS 6</span>
-<a name="l00282"></a>00282 <span class="preprocessor"></span>
-<a name="l00283"></a><a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e">00283</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e">store_item_type</a> {
-<a name="l00284"></a><a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e77647f28a49007bb2c1f10fa36f33b55">00284</a> <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18ef7ef7e30a1b86cc3ffae6fa876110d66">NOT_STORED</a>=0, <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e77647f28a49007bb2c1f10fa36f33b55">STORED</a>, <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e3197625a1bb2264943f5a95f236d9973">EXISTS</a>, <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18ecdaa2919bac56fe1090eb3dbb9526472">NOT_FOUND</a>
-<a name="l00285"></a>00285 };
-<a name="l00286"></a>00286
-<a name="l00287"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html">00287</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-<a name="l00288"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#b491d0e009031a4266f9f81e96129309">00288</a> pthread_t thread_id; <span class="comment">/* unique ID of this thread */</span>
-<a name="l00289"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#edc60f547936f4659d10c690f5eeeada">00289</a> <span class="keyword">struct </span>event_base *base; <span class="comment">/* libevent handle this thread uses */</span>
-<a name="l00290"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#a291c9fc61c0ae2e403aa8feeaa59094">00290</a> <span class="keyword">struct </span>event notify_event; <span class="comment">/* listen event for notify pipe */</span>
-<a name="l00291"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#01d0d9093c0f04bda0656d0aa6f170e9">00291</a> <span class="keywordtype">int</span> notify_receive_fd; <span class="comment">/* receiving end of notify pipe */</span>
-<a name="l00292"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#d53e4c5a53ae00ed1f08d8476981c36b">00292</a> <span class="keywordtype">int</span> notify_send_fd; <span class="comment">/* sending end of notify pipe */</span>
-<a name="l00293"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#b81f0ce2ef093d3d50c78d51ab5d4c8c">00293</a> <span class="keyword">struct </span><a class="code" href="structthread__stats.html" title="Stats stored per-thread.">thread_stats</a> <a class="code" href="structstats.html" title="Global stats.">stats</a>; <span class="comment">/* Stats generated by this thread */</span>
-<a name="l00294"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#79dc836742346c8db838951b2d6f46c5">00294</a> <span class="keyword">struct </span><a class="code" href="structconn__queue.html">conn_queue</a> *new_conn_queue; <span class="comment">/* queue of new connections to handle */</span>
-<a name="l00295"></a>00295 } <a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html">LIBEVENT_THREAD</a>;
-<a name="l00296"></a>00296
-<a name="l00300"></a><a class="code" href="memcached_8h.html#6b845d48e30cbb66add29598de2e00a6">00300</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structconn.html">conn</a> <a class="code" href="structconn.html">conn</a>;
-<a name="l00301"></a><a class="code" href="structconn.html">00301</a> <span class="keyword">struct </span><a class="code" href="structconn.html">conn</a> {
-<a name="l00302"></a><a class="code" href="structconn.html#37f7969ba27e8ae9461a1d3b378351d6">00302</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#37f7969ba27e8ae9461a1d3b378351d6">sfd</a>;
-<a name="l00303"></a><a class="code" href="structconn.html#17e40cc90c3669ee5e50df2ded95c3d0">00303</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> <a class="code" href="structconn.html#17e40cc90c3669ee5e50df2ded95c3d0">state</a>;
-<a name="l00304"></a><a class="code" href="structconn.html#b0cc8eac6501657700093908c092ed3e">00304</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7">bin_substates</a> <a class="code" href="structconn.html#b0cc8eac6501657700093908c092ed3e">substate</a>;
-<a name="l00305"></a><a class="code" href="structconn.html#f1b2df9ad39a82ce06a008b1b04567c3">00305</a> <span class="keyword">struct </span><a class="code" href="structconn.html#f1b2df9ad39a82ce06a008b1b04567c3">event</a> <a class="code" href="structconn.html#f1b2df9ad39a82ce06a008b1b04567c3">event</a>;
-<a name="l00306"></a><a class="code" href="structconn.html#523af570f5630fb5c1aaf51d87c96abc">00306</a> <span class="keywordtype">short</span> <a class="code" href="structconn.html#523af570f5630fb5c1aaf51d87c96abc">ev_flags</a>;
-<a name="l00307"></a><a class="code" href="structconn.html#d4b85274b88921db50c2a221386ca5fe">00307</a> <span class="keywordtype">short</span> <a class="code" href="structconn.html#d4b85274b88921db50c2a221386ca5fe">which</a>;
-<a name="l00309"></a><a class="code" href="structconn.html#c0b276582776af667fe88bf6a73a57b1">00309</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#c0b276582776af667fe88bf6a73a57b1" title="which events were just triggered">rbuf</a>;
-<a name="l00310"></a><a class="code" href="structconn.html#321f9c23c4a20d15d16630c5648ac41a">00310</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#321f9c23c4a20d15d16630c5648ac41a" title="buffer to read commands into">rcurr</a>;
-<a name="l00311"></a><a class="code" href="structconn.html#fd9d7b8a1c2cdba5edd4772fae8adc23">00311</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#fd9d7b8a1c2cdba5edd4772fae8adc23" title="but if we parsed some already, this is where we stopped">rsize</a>;
-<a name="l00312"></a><a class="code" href="structconn.html#4a7eed4d30ba338ae092ec2011e21982">00312</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#4a7eed4d30ba338ae092ec2011e21982" title="total allocated size of rbuf">rbytes</a>;
-<a name="l00314"></a><a class="code" href="structconn.html#b7bcc3e0bf2d962d2f7aad53c6b523b7">00314</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#b7bcc3e0bf2d962d2f7aad53c6b523b7" title="how much data, starting from rcur, do we have unparsed">wbuf</a>;
-<a name="l00315"></a><a class="code" href="structconn.html#d509acb6e118d4ff9991c4592ed4a544">00315</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#d509acb6e118d4ff9991c4592ed4a544">wcurr</a>;
-<a name="l00316"></a><a class="code" href="structconn.html#db55062a3fa6dcacae12144f8756eb0f">00316</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#db55062a3fa6dcacae12144f8756eb0f">wsize</a>;
-<a name="l00317"></a><a class="code" href="structconn.html#5df3a395efeb81c9ea517a81338ba1df">00317</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#5df3a395efeb81c9ea517a81338ba1df">wbytes</a>;
-<a name="l00319"></a><a class="code" href="structconn.html#3e8b2f5988a9791a105de7534aa8b29f">00319</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> <a class="code" href="structconn.html#3e8b2f5988a9791a105de7534aa8b29f" title="which state to go into after finishing current write">write_and_go</a>;
-<a name="l00320"></a><a class="code" href="structconn.html#6dff98252f504190f1f3412650ef5da4">00320</a> <span class="keywordtype">void</span> *<a class="code" href="structconn.html#6dff98252f504190f1f3412650ef5da4">write_and_free</a>;
-<a name="l00322"></a><a class="code" href="structconn.html#28de9d8a5b9432c6f4ad521fc7875ea8">00322</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#28de9d8a5b9432c6f4ad521fc7875ea8" title="free this memory after finishing writing">ritem</a>;
-<a name="l00323"></a><a class="code" href="structconn.html#47f8791b09c3105ecca911bea9b73406">00323</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#47f8791b09c3105ecca911bea9b73406" title="when we read in an item&amp;#39;s value, it goes here">rlbytes</a>;
-<a name="l00324"></a>00324
-<a name="l00325"></a>00325 <span class="comment">/* data for the nread state */</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="cache_8h.html">cache.h</a>"</span>
+<a name="l00024"></a>00024
+<a name="l00026"></a><a class="code" href="memcached_8h.html#a5fda8abf3b5d8881d799a8b84091c6c">00026</a> <span class="preprocessor">#define KEY_MAX_LENGTH 250</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00028"></a><a class="code" href="memcached_8h.html#b723c5f0e9759c70ed582dfd77431ff7">00028</a> <span class="preprocessor">#define DATA_BUFFER_SIZE 2048</span>
+<a name="l00029"></a><a class="code" href="memcached_8h.html#05df0398f9b0815a685d15f36fa809c7">00029</a> <span class="preprocessor"></span><span class="preprocessor">#define UDP_READ_BUFFER_SIZE 65536</span>
+<a name="l00030"></a><a class="code" href="memcached_8h.html#deea76d049af191b881f2d58eca532ca">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define UDP_MAX_PAYLOAD_SIZE 1400</span>
+<a name="l00031"></a><a class="code" href="memcached_8h.html#8a0fae83e487dc04b3cd774b3d4ee637">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define UDP_HEADER_SIZE 8</span>
+<a name="l00032"></a><a class="code" href="memcached_8h.html#39626d37ee23d63b65a51cced19569af">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define MAX_SENDBUF_SIZE (256 * 1024 * 1024)</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="comment">/* I'm told the max length of a 64-bit num converted to string is 20 bytes.</span>
+<a name="l00034"></a>00034 <span class="comment"> * Plus a few for spaces, \r\n, \0 */</span>
+<a name="l00035"></a><a class="code" href="memcached_8h.html#c11cfc1c764d31993bf747dcb16c45c5">00035</a> <span class="preprocessor">#define SUFFIX_SIZE 24</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span>
+<a name="l00038"></a><a class="code" href="memcached_8h.html#67fead4b33f125ae7873422d8d8dcdfb">00038</a> <span class="preprocessor">#define ITEM_LIST_INITIAL 200</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span>
+<a name="l00041"></a><a class="code" href="memcached_8h.html#ad50a115f190cb796d5a25b910d62ac8">00041</a> <span class="preprocessor">#define SUFFIX_LIST_INITIAL 20</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>
+<a name="l00044"></a><a class="code" href="memcached_8h.html#18ce3212ea76fbc1de1fe2d34f4b8c7e">00044</a> <span class="preprocessor">#define IOV_LIST_INITIAL 400</span>
+<a name="l00045"></a>00045 <span class="preprocessor"></span>
+<a name="l00047"></a><a class="code" href="memcached_8h.html#04e8d0719aba6a59ac6cb0b3ed202f95">00047</a> <span class="preprocessor">#define MSG_LIST_INITIAL 10</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span>
+<a name="l00050"></a><a class="code" href="memcached_8h.html#14d2f1d60a85984e1e0667cbefb620fc">00050</a> <span class="preprocessor">#define READ_BUFFER_HIGHWAT 8192</span>
+<a name="l00051"></a><a class="code" href="memcached_8h.html#d956eb982df5bd7acbda28c721b41eaa">00051</a> <span class="preprocessor"></span><span class="preprocessor">#define ITEM_LIST_HIGHWAT 400</span>
+<a name="l00052"></a><a class="code" href="memcached_8h.html#caa0d98800d7b0731fe95772fe298bd0">00052</a> <span class="preprocessor"></span><span class="preprocessor">#define IOV_LIST_HIGHWAT 600</span>
+<a name="l00053"></a><a class="code" href="memcached_8h.html#78cce1eb067f697c57755dee6475f59d">00053</a> <span class="preprocessor"></span><span class="preprocessor">#define MSG_LIST_HIGHWAT 100</span>
+<a name="l00054"></a>00054 <span class="preprocessor"></span>
+<a name="l00055"></a>00055 <span class="comment">/* Binary protocol stuff */</span>
+<a name="l00056"></a><a class="code" href="memcached_8h.html#811c6b700b56f87244029a6136cedf29">00056</a> <span class="preprocessor">#define MIN_BIN_PKT_LENGTH 16</span>
+<a name="l00057"></a><a class="code" href="memcached_8h.html#52e0174a1089d9beba9b4007b96fd647">00057</a> <span class="preprocessor"></span><span class="preprocessor">#define BIN_PKT_HDR_WORDS (MIN_BIN_PKT_LENGTH/sizeof(uint32_t))</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span>
+<a name="l00059"></a>00059 <span class="comment">/* unistd.h is here */</span>
+<a name="l00060"></a>00060 <span class="preprocessor">#if HAVE_UNISTD_H</span>
+<a name="l00061"></a>00061 <span class="preprocessor"></span><span class="preprocessor"># include &lt;unistd.h&gt;</span>
+<a name="l00062"></a>00062 <span class="preprocessor">#endif</span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span>
+<a name="l00064"></a>00064 <span class="comment">/* Slab sizing definitions. */</span>
+<a name="l00065"></a><a class="code" href="memcached_8h.html#3be25b5d15a433c400ec50d2c9d858b9">00065</a> <span class="preprocessor">#define POWER_SMALLEST 1</span>
+<a name="l00066"></a><a class="code" href="memcached_8h.html#0f6e848eba50c148da7a61eb94061c3c">00066</a> <span class="preprocessor"></span><span class="preprocessor">#define POWER_LARGEST 200</span>
+<a name="l00067"></a><a class="code" href="memcached_8h.html#1000923632a496e81e50102c2694db41">00067</a> <span class="preprocessor"></span><span class="preprocessor">#define POWER_BLOCK 1048576</span>
+<a name="l00068"></a><a class="code" href="memcached_8h.html#8cd56df53d2341debe15fafe411515a6">00068</a> <span class="preprocessor"></span><span class="preprocessor">#define CHUNK_ALIGN_BYTES 8</span>
+<a name="l00069"></a><a class="code" href="memcached_8h.html#d6e30718df50c9991afd87dc619c851f">00069</a> <span class="preprocessor"></span><span class="preprocessor">#define DONT_PREALLOC_SLABS</span>
+<a name="l00070"></a><a class="code" href="memcached_8h.html#e8e332c92e566cf3b38a8a7e3d08eafe">00070</a> <span class="preprocessor"></span><span class="preprocessor">#define MAX_NUMBER_OF_SLAB_CLASSES (POWER_LARGEST + 1)</span>
+<a name="l00071"></a>00071 <span class="preprocessor"></span>
+<a name="l00074"></a><a class="code" href="memcached_8h.html#421b08fd9fc3d24db6d39014c02f66bb">00074</a> <span class="preprocessor">#define TAIL_REPAIR_TIME (3 * 3600)</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span>
+<a name="l00077"></a><a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4">00077</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a>;
+<a name="l00078"></a>00078
+<a name="l00080"></a><a class="code" href="structslab__stats.html">00080</a> <span class="keyword">struct </span><a class="code" href="structslab__stats.html" title="Stats stored per slab (and per thread).">slab_stats</a> {
+<a name="l00081"></a><a class="code" href="structslab__stats.html#4da67cc4f2297d79e69e3805f42c90b7">00081</a> uint64_t <a class="code" href="structslab__stats.html#4da67cc4f2297d79e69e3805f42c90b7">set_cmds</a>;
+<a name="l00082"></a><a class="code" href="structslab__stats.html#7bc073fa35375d23129eab883ff2b633">00082</a> uint64_t <a class="code" href="structslab__stats.html#7bc073fa35375d23129eab883ff2b633">get_hits</a>;
+<a name="l00083"></a><a class="code" href="structslab__stats.html#269423b43063e97b7ecdd16347f38cb4">00083</a> uint64_t <a class="code" href="structslab__stats.html#269423b43063e97b7ecdd16347f38cb4">delete_hits</a>;
+<a name="l00084"></a><a class="code" href="structslab__stats.html#391924745fcae79874c492f9db29f6e5">00084</a> uint64_t <a class="code" href="structslab__stats.html#391924745fcae79874c492f9db29f6e5">cas_hits</a>;
+<a name="l00085"></a><a class="code" href="structslab__stats.html#f7dc635cd3086d46d93cfd44e3a6c3e7">00085</a> uint64_t <a class="code" href="structslab__stats.html#f7dc635cd3086d46d93cfd44e3a6c3e7">cas_badval</a>;
+<a name="l00086"></a><a class="code" href="structslab__stats.html#a184357792689748e228095f17f9e83c">00086</a> uint64_t <a class="code" href="structslab__stats.html#a184357792689748e228095f17f9e83c">incr_hits</a>;
+<a name="l00087"></a><a class="code" href="structslab__stats.html#08355226ee7038716958682338fdbdda">00087</a> uint64_t <a class="code" href="structslab__stats.html#08355226ee7038716958682338fdbdda">decr_hits</a>;
+<a name="l00088"></a>00088 };
+<a name="l00089"></a>00089
+<a name="l00093"></a><a class="code" href="structthread__stats.html">00093</a> <span class="keyword">struct </span><a class="code" href="structthread__stats.html" title="Stats stored per-thread.">thread_stats</a> {
+<a name="l00094"></a><a class="code" href="structthread__stats.html#656e2f3c52c764e6bbba2c8de29ae812">00094</a> pthread_mutex_t <a class="code" href="structthread__stats.html#656e2f3c52c764e6bbba2c8de29ae812">mutex</a>;
+<a name="l00095"></a><a class="code" href="structthread__stats.html#ffa01fa8b4974f4839122424c1bb2fc3">00095</a> uint64_t <a class="code" href="structthread__stats.html#ffa01fa8b4974f4839122424c1bb2fc3">get_cmds</a>;
+<a name="l00096"></a><a class="code" href="structthread__stats.html#cc592fd8da9cdd9a227c59f8ba346fb5">00096</a> uint64_t <a class="code" href="structthread__stats.html#cc592fd8da9cdd9a227c59f8ba346fb5">get_misses</a>;
+<a name="l00097"></a><a class="code" href="structthread__stats.html#eb08e5cab194e1337007464c42fbbbdf">00097</a> uint64_t <a class="code" href="structthread__stats.html#eb08e5cab194e1337007464c42fbbbdf">delete_misses</a>;
+<a name="l00098"></a><a class="code" href="structthread__stats.html#9d783773df9a1163f1475fe10e4d2838">00098</a> uint64_t <a class="code" href="structthread__stats.html#9d783773df9a1163f1475fe10e4d2838">incr_misses</a>;
+<a name="l00099"></a><a class="code" href="structthread__stats.html#f5376d1206b9e71cbff2dab81e930d28">00099</a> uint64_t <a class="code" href="structthread__stats.html#f5376d1206b9e71cbff2dab81e930d28">decr_misses</a>;
+<a name="l00100"></a><a class="code" href="structthread__stats.html#daaed26081651c8236b1cc5b4f4748ec">00100</a> uint64_t <a class="code" href="structthread__stats.html#daaed26081651c8236b1cc5b4f4748ec">cas_misses</a>;
+<a name="l00101"></a><a class="code" href="structthread__stats.html#78b389a507be8c78d2757b79c6b2069d">00101</a> uint64_t <a class="code" href="structthread__stats.html#78b389a507be8c78d2757b79c6b2069d">bytes_read</a>;
+<a name="l00102"></a><a class="code" href="structthread__stats.html#fff437fd1fcac940ffd2fa44d3182838">00102</a> uint64_t <a class="code" href="structthread__stats.html#fff437fd1fcac940ffd2fa44d3182838">bytes_written</a>;
+<a name="l00103"></a><a class="code" href="structthread__stats.html#8f4915ca2892f21641a126951660b625">00103</a> uint64_t <a class="code" href="structthread__stats.html#8f4915ca2892f21641a126951660b625">flush_cmds</a>;
+<a name="l00104"></a><a class="code" href="structthread__stats.html#efc242998efe6318a32510565acbcb01">00104</a> <span class="keyword">struct </span><a class="code" href="structslab__stats.html" title="Stats stored per slab (and per thread).">slab_stats</a> <a class="code" href="structslab__stats.html" title="Stats stored per slab (and per thread).">slab_stats</a>[<a class="code" href="memcached_8h.html#e8e332c92e566cf3b38a8a7e3d08eafe">MAX_NUMBER_OF_SLAB_CLASSES</a>];
+<a name="l00105"></a>00105 };
+<a name="l00106"></a>00106
+<a name="l00110"></a><a class="code" href="structstats.html">00110</a> <span class="keyword">struct </span><a class="code" href="structstats.html" title="Global stats.">stats</a> {
+<a name="l00111"></a><a class="code" href="structstats.html#a1da24a4ab04ced93a99433d2914ed96">00111</a> pthread_mutex_t <a class="code" href="structstats.html#a1da24a4ab04ced93a99433d2914ed96">mutex</a>;
+<a name="l00112"></a><a class="code" href="structstats.html#7e27973d723b2bb83265f1324b6265d5">00112</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#7e27973d723b2bb83265f1324b6265d5">curr_items</a>;
+<a name="l00113"></a><a class="code" href="structstats.html#f4feaf763564d06ef80569941f31b641">00113</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#f4feaf763564d06ef80569941f31b641">total_items</a>;
+<a name="l00114"></a><a class="code" href="structstats.html#16d174f23f4b8e48c3dc2557f2db7750">00114</a> uint64_t <a class="code" href="structstats.html#16d174f23f4b8e48c3dc2557f2db7750">curr_bytes</a>;
+<a name="l00115"></a><a class="code" href="structstats.html#1c0edacbfc2610977c9d1c6a675be6bb">00115</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#1c0edacbfc2610977c9d1c6a675be6bb">curr_conns</a>;
+<a name="l00116"></a><a class="code" href="structstats.html#4b4ee0d2ac0f6c34246f459cb9af20cd">00116</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#4b4ee0d2ac0f6c34246f459cb9af20cd">total_conns</a>;
+<a name="l00117"></a><a class="code" href="structstats.html#444566021e240f7552b946e7516d6ebe">00117</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structstats.html#444566021e240f7552b946e7516d6ebe">conn_structs</a>;
+<a name="l00118"></a><a class="code" href="structstats.html#990bacf5404f31f17a6dafc465a2b775">00118</a> uint64_t <a class="code" href="structstats.html#990bacf5404f31f17a6dafc465a2b775">get_cmds</a>;
+<a name="l00119"></a><a class="code" href="structstats.html#53ccb9f0a724b936ad00f9af020dd6a0">00119</a> uint64_t <a class="code" href="structstats.html#53ccb9f0a724b936ad00f9af020dd6a0">set_cmds</a>;
+<a name="l00120"></a><a class="code" href="structstats.html#12c881743d5b3afd0a4ab18b29a413c9">00120</a> uint64_t <a class="code" href="structstats.html#12c881743d5b3afd0a4ab18b29a413c9">get_hits</a>;
+<a name="l00121"></a><a class="code" href="structstats.html#1802ea50eb0aab84ab3e923dd53d294e">00121</a> uint64_t <a class="code" href="structstats.html#1802ea50eb0aab84ab3e923dd53d294e">get_misses</a>;
+<a name="l00122"></a><a class="code" href="structstats.html#cecd3ccfa807a4fb7deb5be5e174a6fc">00122</a> uint64_t <a class="code" href="structstats.html#cecd3ccfa807a4fb7deb5be5e174a6fc">evictions</a>;
+<a name="l00123"></a><a class="code" href="structstats.html#baf2f10d93dcc5aef7c8ca46c3c52e0b">00123</a> time_t <a class="code" href="structstats.html#baf2f10d93dcc5aef7c8ca46c3c52e0b">started</a>; <span class="comment">/* when the process was started */</span>
+<a name="l00124"></a><a class="code" href="structstats.html#ed0a44d59a6fc1d01dca4639414905a0">00124</a> <span class="keywordtype">bool</span> <a class="code" href="structstats.html#ed0a44d59a6fc1d01dca4639414905a0">accepting_conns</a>; <span class="comment">/* whether we are currently accepting */</span>
+<a name="l00125"></a><a class="code" href="structstats.html#7cce50f30bfeebca79e4fb3c36def765">00125</a> uint64_t <a class="code" href="structstats.html#7cce50f30bfeebca79e4fb3c36def765">listen_disabled_num</a>;
+<a name="l00126"></a>00126 };
+<a name="l00127"></a>00127
+<a name="l00128"></a><a class="code" href="memcached_8h.html#6d56e2cd35fd2a8391a19abba528f353">00128</a> <span class="preprocessor">#define MAX_VERBOSITY_LEVEL 2</span>
+<a name="l00129"></a>00129 <span class="preprocessor"></span>
+<a name="l00130"></a>00130 <span class="comment">/* When adding a setting, be sure to update process_stat_settings */</span>
+<a name="l00134"></a><a class="code" href="structsettings.html">00134</a> <span class="keyword">struct </span><a class="code" href="structsettings.html" title="Globally accessible settings as derived from the commandline.">settings</a> {
+<a name="l00135"></a><a class="code" href="structsettings.html#9e462ca2f9a0531d782cd24f2e51354f">00135</a> <span class="keywordtype">size_t</span> <a class="code" href="structsettings.html#9e462ca2f9a0531d782cd24f2e51354f">maxbytes</a>;
+<a name="l00136"></a><a class="code" href="structsettings.html#661321f255edb678a4b8a52e909b4acf">00136</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#661321f255edb678a4b8a52e909b4acf">maxconns</a>;
+<a name="l00137"></a><a class="code" href="structsettings.html#20fa1e33e54d255f4f5e3df2da3e64ef">00137</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#20fa1e33e54d255f4f5e3df2da3e64ef">port</a>;
+<a name="l00138"></a><a class="code" href="structsettings.html#1a574901d729a109bd3156885c96e37e">00138</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#1a574901d729a109bd3156885c96e37e">udpport</a>;
+<a name="l00139"></a><a class="code" href="structsettings.html#3077457f2ff945dbc779ec42c44dfb08">00139</a> <span class="keywordtype">char</span> *<a class="code" href="structsettings.html#3077457f2ff945dbc779ec42c44dfb08">inter</a>;
+<a name="l00140"></a><a class="code" href="structsettings.html#8cfab16abb0cfc28ce1244c48bacdb6e">00140</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#8cfab16abb0cfc28ce1244c48bacdb6e">verbose</a>;
+<a name="l00141"></a><a class="code" href="structsettings.html#df482d13739658b54ac96c6eadba8bc6">00141</a> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> <a class="code" href="structsettings.html#df482d13739658b54ac96c6eadba8bc6">oldest_live</a>; <span class="comment">/* ignore existing items older than this */</span>
+<a name="l00142"></a><a class="code" href="structsettings.html#d168c4ce8bca42ce8f7b0ba8b66fba1a">00142</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#d168c4ce8bca42ce8f7b0ba8b66fba1a">evict_to_free</a>;
+<a name="l00143"></a><a class="code" href="structsettings.html#4c283e7be93d2eb0e7af366abc360ba7">00143</a> <span class="keywordtype">char</span> *<a class="code" href="structsettings.html#4c283e7be93d2eb0e7af366abc360ba7">socketpath</a>; <span class="comment">/* path to unix socket if using local socket */</span>
+<a name="l00144"></a><a class="code" href="structsettings.html#f277fc65f2ad1e28b75305e1b4366b8a">00144</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#f277fc65f2ad1e28b75305e1b4366b8a">access</a>; <span class="comment">/* access mask (a la chmod) for unix domain socket */</span>
+<a name="l00145"></a><a class="code" href="structsettings.html#a0c4be9f40fe18de45a3ee9bb9fda8a6">00145</a> <span class="keywordtype">double</span> <a class="code" href="structsettings.html#a0c4be9f40fe18de45a3ee9bb9fda8a6">factor</a>; <span class="comment">/* chunk size growth factor */</span>
+<a name="l00146"></a><a class="code" href="structsettings.html#59bb385a05df23defc39f23a4b95b2be">00146</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#59bb385a05df23defc39f23a4b95b2be">chunk_size</a>;
+<a name="l00147"></a><a class="code" href="structsettings.html#b7886bf6034656be4f274719e2f6c4a1">00147</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#b7886bf6034656be4f274719e2f6c4a1">num_threads</a>; <span class="comment">/* number of libevent threads to run */</span>
+<a name="l00148"></a><a class="code" href="structsettings.html#3f7e4aa1d7561b994111a9e47f82f1bb">00148</a> <span class="keywordtype">char</span> <a class="code" href="structsettings.html#3f7e4aa1d7561b994111a9e47f82f1bb">prefix_delimiter</a>; <span class="comment">/* character that marks a key prefix (for stats) */</span>
+<a name="l00149"></a><a class="code" href="structsettings.html#b49cd2e86b9b26f407fe76569560a9df">00149</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#b49cd2e86b9b26f407fe76569560a9df">detail_enabled</a>; <span class="comment">/* nonzero if we're collecting detailed stats */</span>
+<a name="l00150"></a><a class="code" href="structsettings.html#85ffd37171524861e0e384bb5c607e17">00150</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#85ffd37171524861e0e384bb5c607e17">reqs_per_event</a>; <span class="comment">/* Maximum number of io to process on each</span>
+<a name="l00151"></a>00151 <span class="comment"> io-event. */</span>
+<a name="l00152"></a><a class="code" href="structsettings.html#df2782217e9e89322915fb32fee95880">00152</a> <span class="keywordtype">bool</span> <a class="code" href="structsettings.html#df2782217e9e89322915fb32fee95880">use_cas</a>;
+<a name="l00153"></a><a class="code" href="structsettings.html#f38c63a2526c784f539575bf15525ca2">00153</a> <span class="keywordtype">int</span> <a class="code" href="structsettings.html#f38c63a2526c784f539575bf15525ca2">backlog</a>;
+<a name="l00154"></a>00154 };
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 <span class="keyword">extern</span> <span class="keyword">struct </span><a class="code" href="structstats.html" title="Global stats.">stats</a> <a class="code" href="structstats.html" title="Global stats.">stats</a>;
+<a name="l00157"></a>00157 <span class="keyword">extern</span> time_t <a class="code" href="memcached_8c.html#584cbee39bbab65f2c8d87932cf92140">process_started</a>;
+<a name="l00158"></a>00158 <span class="keyword">extern</span> <span class="keyword">struct </span><a class="code" href="structsettings.html" title="Globally accessible settings as derived from the commandline.">settings</a> <a class="code" href="structsettings.html" title="Globally accessible settings as derived from the commandline.">settings</a>;
+<a name="l00159"></a>00159
+<a name="l00160"></a><a class="code" href="memcached_8h.html#0fdfa9fdfdd2d9cd25d7bd7ad6033e03">00160</a> <span class="preprocessor">#define ITEM_LINKED 1</span>
+<a name="l00161"></a><a class="code" href="memcached_8h.html#92c9e4680eee65905b0518321805430f">00161</a> <span class="preprocessor"></span><span class="preprocessor">#define ITEM_CAS 2</span>
+<a name="l00162"></a>00162 <span class="preprocessor"></span>
+<a name="l00163"></a>00163 <span class="comment">/* temp */</span>
+<a name="l00164"></a><a class="code" href="memcached_8h.html#0eac12291582819219bf0f6ce9124364">00164</a> <span class="preprocessor">#define ITEM_SLABBED 4</span>
+<a name="l00165"></a>00165 <span class="preprocessor"></span>
+<a name="l00169"></a><a class="code" href="struct__stritem.html">00169</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">_stritem</a> {
+<a name="l00170"></a><a class="code" href="struct__stritem.html#d7f5d4ca7eae6391b02a8e0d95c99b87">00170</a> <span class="keyword">struct </span><a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">_stritem</a> *<a class="code" href="struct__stritem.html#d7f5d4ca7eae6391b02a8e0d95c99b87">next</a>;
+<a name="l00171"></a><a class="code" href="struct__stritem.html#fcc1decef9e8c41fb64f4995462a08fa">00171</a> <span class="keyword">struct </span><a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">_stritem</a> *<a class="code" href="struct__stritem.html#fcc1decef9e8c41fb64f4995462a08fa">prev</a>;
+<a name="l00172"></a><a class="code" href="struct__stritem.html#cc3bc0ca62146131ad8ae8518545e11b">00172</a> <span class="keyword">struct </span><a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">_stritem</a> *<a class="code" href="struct__stritem.html#cc3bc0ca62146131ad8ae8518545e11b">h_next</a>; <span class="comment">/* hash chain next */</span>
+<a name="l00173"></a><a class="code" href="struct__stritem.html#7953b640eea943ce42644c00136cd462">00173</a> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> <a class="code" href="struct__stritem.html#7953b640eea943ce42644c00136cd462">time</a>; <span class="comment">/* least recent access */</span>
+<a name="l00174"></a><a class="code" href="struct__stritem.html#fd87174e4e2f16bf48a950ff28ba65d4">00174</a> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> <a class="code" href="struct__stritem.html#fd87174e4e2f16bf48a950ff28ba65d4">exptime</a>; <span class="comment">/* expire time */</span>
+<a name="l00175"></a><a class="code" href="struct__stritem.html#e718d73982b5d22c28887575e9e4dcd4">00175</a> <span class="keywordtype">int</span> <a class="code" href="struct__stritem.html#e718d73982b5d22c28887575e9e4dcd4">nbytes</a>; <span class="comment">/* size of data */</span>
+<a name="l00176"></a><a class="code" href="struct__stritem.html#f4b10743e972c424f170f3bbc277ded5">00176</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="struct__stritem.html#f4b10743e972c424f170f3bbc277ded5">refcount</a>;
+<a name="l00177"></a><a class="code" href="struct__stritem.html#d104597f204745473144018ef15c1459">00177</a> uint8_t <a class="code" href="struct__stritem.html#d104597f204745473144018ef15c1459">nsuffix</a>; <span class="comment">/* length of flags-and-length string */</span>
+<a name="l00178"></a><a class="code" href="struct__stritem.html#35e3398ad4aaed940e920c99157eca10">00178</a> uint8_t <a class="code" href="struct__stritem.html#35e3398ad4aaed940e920c99157eca10">it_flags</a>; <span class="comment">/* ITEM_* above */</span>
+<a name="l00179"></a><a class="code" href="struct__stritem.html#2b9111cab21baa2ee90bd8866e7be988">00179</a> uint8_t <a class="code" href="struct__stritem.html#2b9111cab21baa2ee90bd8866e7be988">slabs_clsid</a>;<span class="comment">/* which slab class we're in */</span>
+<a name="l00180"></a><a class="code" href="struct__stritem.html#5e19a37b7235464196b4155a46758ff4">00180</a> uint8_t <a class="code" href="struct__stritem.html#5e19a37b7235464196b4155a46758ff4">nkey</a>; <span class="comment">/* key length, w/terminating null and padding */</span>
+<a name="l00181"></a><a class="code" href="struct__stritem.html#c6f2eb9984981d107d1e339cad333f50">00181</a> <span class="keywordtype">void</span> * <a class="code" href="struct__stritem.html#c6f2eb9984981d107d1e339cad333f50">end</a>[];
+<a name="l00182"></a>00182 <span class="comment">/* if it_flags &amp; ITEM_CAS we have 8 bytes CAS */</span>
+<a name="l00183"></a>00183 <span class="comment">/* then null-terminated key */</span>
+<a name="l00184"></a>00184 <span class="comment">/* then " flags length\r\n" (no terminating null) */</span>
+<a name="l00185"></a>00185 <span class="comment">/* then data with terminating \r\n (no terminating null; it's binary!) */</span>
+<a name="l00186"></a>00186 } <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>;
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 <span class="comment">/* warning: don't use these macros with a function, as it evals its arg twice */</span>
+<a name="l00189"></a><a class="code" href="memcached_8h.html#b8e3564ae343cbe6a61e7d277fe0d849">00189</a> <span class="preprocessor">#define ITEM_get_cas(i) ((uint64_t)(((i)-&gt;it_flags &amp; ITEM_CAS) ? \</span>
+<a name="l00190"></a>00190 <span class="preprocessor"> *(uint64_t*)&amp;((i)-&gt;end[0]) : 0x0))</span>
+<a name="l00191"></a><a class="code" href="memcached_8h.html#906a01f2020378ebc543f3fac3a8de5c">00191</a> <span class="preprocessor"></span><span class="preprocessor">#define ITEM_set_cas(i,v) { if ((i)-&gt;it_flags &amp; ITEM_CAS) { \</span>
+<a name="l00192"></a>00192 <span class="preprocessor"> *(uint64_t*)&amp;((i)-&gt;end[0]) = v; } }</span>
+<a name="l00193"></a>00193 <span class="preprocessor"></span>
+<a name="l00194"></a><a class="code" href="memcached_8h.html#6f0bbc1b60dc6d44e4f33b7072c5c556">00194</a> <span class="preprocessor">#define ITEM_key(item) (((char*)&amp;((item)-&gt;end[0])) \</span>
+<a name="l00195"></a>00195 <span class="preprocessor"> + (((item)-&gt;it_flags &amp; ITEM_CAS) ? sizeof(uint64_t) : 0))</span>
+<a name="l00196"></a>00196 <span class="preprocessor"></span>
+<a name="l00197"></a><a class="code" href="memcached_8h.html#cc9266e9b04daa12e359eb6d6f052fc3">00197</a> <span class="preprocessor">#define ITEM_suffix(item) ((char*) &amp;((item)-&gt;end[0]) + (item)-&gt;nkey + 1 \</span>
+<a name="l00198"></a>00198 <span class="preprocessor"> + (((item)-&gt;it_flags &amp; ITEM_CAS) ? sizeof(uint64_t) : 0))</span>
+<a name="l00199"></a>00199 <span class="preprocessor"></span>
+<a name="l00200"></a><a class="code" href="memcached_8h.html#442889c7cb5c1ec39981f299331b4b29">00200</a> <span class="preprocessor">#define ITEM_data(item) ((char*) &amp;((item)-&gt;end[0]) + (item)-&gt;nkey + 1 \</span>
+<a name="l00201"></a>00201 <span class="preprocessor"> + (item)-&gt;nsuffix \</span>
+<a name="l00202"></a>00202 <span class="preprocessor"> + (((item)-&gt;it_flags &amp; ITEM_CAS) ? sizeof(uint64_t) : 0))</span>
+<a name="l00203"></a>00203 <span class="preprocessor"></span>
+<a name="l00204"></a><a class="code" href="memcached_8h.html#5c9d5467cfb934e32d0794afc596fded">00204</a> <span class="preprocessor">#define ITEM_ntotal(item) (sizeof(struct _stritem) + (item)-&gt;nkey + 1 \</span>
+<a name="l00205"></a>00205 <span class="preprocessor"> + (item)-&gt;nsuffix + (item)-&gt;nbytes \</span>
+<a name="l00206"></a>00206 <span class="preprocessor"> + (((item)-&gt;it_flags &amp; ITEM_CAS) ? sizeof(uint64_t) : 0))</span>
+<a name="l00207"></a>00207 <span class="preprocessor"></span>
+<a name="l00209"></a><a class="code" href="memcached_8h.html#76c2c7de1009374de65513d72f6e3e56">00209</a> <span class="preprocessor">#define APPEND_STAT(name, fmt, val) \</span>
+<a name="l00210"></a>00210 <span class="preprocessor"> append_stat(name, add_stats, c, fmt, val);</span>
+<a name="l00211"></a>00211 <span class="preprocessor"></span>
+<a name="l00214"></a><a class="code" href="memcached_8h.html#30ab71365faf0a05119b4705e26d81a8">00214</a> <span class="preprocessor">#define APPEND_NUM_FMT_STAT(name_fmt, num, name, fmt, val) \</span>
+<a name="l00215"></a>00215 <span class="preprocessor"> klen = sprintf(key_str, name_fmt, num, name); \</span>
+<a name="l00216"></a>00216 <span class="preprocessor"> vlen = sprintf(val_str, fmt, val); \</span>
+<a name="l00217"></a>00217 <span class="preprocessor"> add_stats(key_str, klen, val_str, vlen, c);</span>
+<a name="l00218"></a>00218 <span class="preprocessor"></span>
+<a name="l00220"></a><a class="code" href="memcached_8h.html#be2689982c5b4d28c7eb6151710f404d">00220</a> <span class="preprocessor">#define APPEND_NUM_STAT(num, name, fmt, val) \</span>
+<a name="l00221"></a>00221 <span class="preprocessor"> APPEND_NUM_FMT_STAT("%d:%s", num, name, fmt, val)</span>
+<a name="l00222"></a>00222 <span class="preprocessor"></span>
+<a name="l00232"></a><a class="code" href="memcached_8h.html#b8d9bd9ba0b7b765633bf9b6cbd6aa30">00232</a> <span class="keyword">typedef</span> void (*<a class="code" href="memcached_8h.html#b8d9bd9ba0b7b765633bf9b6cbd6aa30" title="Callback for any function producing stats.">ADD_STAT</a>)(<span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> uint16_t klen,
+<a name="l00233"></a>00233 <span class="keyword">const</span> <span class="keywordtype">char</span> *val, <span class="keyword">const</span> uint32_t vlen,
+<a name="l00234"></a>00234 <span class="keyword">const</span> <span class="keywordtype">void</span> *cookie);
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 <span class="comment">/*</span>
+<a name="l00237"></a>00237 <span class="comment"> * NOTE: If you modify this table you _MUST_ update the function state_text</span>
+<a name="l00238"></a>00238 <span class="comment"> */</span>
+<a name="l00242"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7">00242</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> {
+<a name="l00243"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7b8f6ee6d7c37cbcd7062290e7f737dfa">00243</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7b8f6ee6d7c37cbcd7062290e7f737dfa" title="the socket which listens for connections">conn_listening</a>,
+<a name="l00244"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7471b58ebc7dca71b12cff6fc620d70ef">00244</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7471b58ebc7dca71b12cff6fc620d70ef" title="Prepare connection for next command.">conn_new_cmd</a>,
+<a name="l00245"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a745b0d57ee61815e8785958115727bcd6">00245</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a745b0d57ee61815e8785958115727bcd6" title="waiting for a readable socket">conn_waiting</a>,
+<a name="l00246"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a70fba4717ce3bd2ef568d54994adf8d39">00246</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a70fba4717ce3bd2ef568d54994adf8d39" title="reading in a command line">conn_read</a>,
+<a name="l00247"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7d1037eff7d3fdbb41b18a4f2318c04e4">00247</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7d1037eff7d3fdbb41b18a4f2318c04e4" title="try to parse a command from the input buffer">conn_parse_cmd</a>,
+<a name="l00248"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7cbae1e2e254af99276db29687b1c1594">00248</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7cbae1e2e254af99276db29687b1c1594" title="writing out a simple response">conn_write</a>,
+<a name="l00249"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a77bd90fbd58a0d585b4dbb133df716ba9">00249</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a77bd90fbd58a0d585b4dbb133df716ba9" title="reading in a fixed number of bytes">conn_nread</a>,
+<a name="l00250"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a77f3423d135032e6efd97a54256e0d990">00250</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a77f3423d135032e6efd97a54256e0d990" title="swallowing unnecessary bytes w/o storing">conn_swallow</a>,
+<a name="l00251"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7baf6f3e6a12460ae0b11c5dc984def13">00251</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7baf6f3e6a12460ae0b11c5dc984def13" title="closing this connection">conn_closing</a>,
+<a name="l00252"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a74cc089a47b08dead789981192fb85bca">00252</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a74cc089a47b08dead789981192fb85bca" title="writing out many items sequentially">conn_mwrite</a>,
+<a name="l00253"></a><a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7ca81038536eb0d4020afb6ef63c1d21d">00253</a> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7ca81038536eb0d4020afb6ef63c1d21d" title="Max state value (used for assertion).">conn_max_state</a>
+<a name="l00254"></a>00254 };
+<a name="l00255"></a>00255
+<a name="l00256"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7">00256</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7">bin_substates</a> {
+<a name="l00257"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7cef6c433a3f788f6496712ff3863ed81">00257</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7cef6c433a3f788f6496712ff3863ed81">bin_no_state</a>,
+<a name="l00258"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c79ab816e3175ec539a708893697ccb9d8">00258</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c79ab816e3175ec539a708893697ccb9d8">bin_reading_set_header</a>,
+<a name="l00259"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c73e3d8313972488ac21259efabdc55e6b">00259</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c73e3d8313972488ac21259efabdc55e6b">bin_reading_cas_header</a>,
+<a name="l00260"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7d06ff8b91c2992cc00a729781a27a60b">00260</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7d06ff8b91c2992cc00a729781a27a60b">bin_read_set_value</a>,
+<a name="l00261"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c71475f54a5df58e452a485e0fdece93dc">00261</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c71475f54a5df58e452a485e0fdece93dc">bin_reading_get_key</a>,
+<a name="l00262"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7e16889ae613bfb54c7b620a8ffc4155b">00262</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7e16889ae613bfb54c7b620a8ffc4155b">bin_reading_stat</a>,
+<a name="l00263"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7ed8eb46134a61812268a752a532686d7">00263</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7ed8eb46134a61812268a752a532686d7">bin_reading_del_header</a>,
+<a name="l00264"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c711010d81960b20927d416a9ff93400d2">00264</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c711010d81960b20927d416a9ff93400d2">bin_reading_incr_header</a>,
+<a name="l00265"></a><a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7a4f0970d48aa5e8389a987a590f51fd1">00265</a> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7a4f0970d48aa5e8389a987a590f51fd1">bin_read_flush_exptime</a>
+<a name="l00266"></a>00266 };
+<a name="l00267"></a>00267
+<a name="l00268"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">00268</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a> {
+<a name="l00269"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd4ea4e26ca73d727186948986255b7ee1">00269</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd4ea4e26ca73d727186948986255b7ee1">ascii_prot</a> = 3, <span class="comment">/* arbitrary value. */</span>
+<a name="l00270"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd013efd3024d75e93d9fbd7109e387ac5">00270</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd013efd3024d75e93d9fbd7109e387ac5">ascii_udp_prot</a>,
+<a name="l00271"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cda690b1bac2d1cb639ad1cae78b34e00a">00271</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cda690b1bac2d1cb639ad1cae78b34e00a">binary_prot</a>,
+<a name="l00272"></a><a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cdf80e49eae5478cb0ec774eb4c6f691e5">00272</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cdf80e49eae5478cb0ec774eb4c6f691e5">negotiating_prot</a> <span class="comment">/* Discovering the protocol */</span>
+<a name="l00273"></a>00273 };
+<a name="l00274"></a>00274
+<a name="l00275"></a><a class="code" href="memcached_8h.html#e7d628501377024bde05056f4af112bb">00275</a> <span class="preprocessor">#define IS_UDP(x) (x == ascii_udp_prot)</span>
+<a name="l00276"></a>00276 <span class="preprocessor"></span>
+<a name="l00277"></a><a class="code" href="memcached_8h.html#2beaf4cbf661902595987c951dca81b5">00277</a> <span class="preprocessor">#define NREAD_ADD 1</span>
+<a name="l00278"></a><a class="code" href="memcached_8h.html#fbe0384d1c4c682750a250c53a4360b6">00278</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_SET 2</span>
+<a name="l00279"></a><a class="code" href="memcached_8h.html#cf25e0ecbffb495dfedf760dde07d729">00279</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_REPLACE 3</span>
+<a name="l00280"></a><a class="code" href="memcached_8h.html#ceae72061dd3619d8fb95e33bae0b8e8">00280</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_APPEND 4</span>
+<a name="l00281"></a><a class="code" href="memcached_8h.html#fbaf99dc7e4b0e86f91e8e44da33a5c1">00281</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_PREPEND 5</span>
+<a name="l00282"></a><a class="code" href="memcached_8h.html#efa2deecfd52be7f36ed92e857a5a134">00282</a> <span class="preprocessor"></span><span class="preprocessor">#define NREAD_CAS 6</span>
+<a name="l00283"></a>00283 <span class="preprocessor"></span>
+<a name="l00284"></a><a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e">00284</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e">store_item_type</a> {
+<a name="l00285"></a><a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e77647f28a49007bb2c1f10fa36f33b55">00285</a> <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18ef7ef7e30a1b86cc3ffae6fa876110d66">NOT_STORED</a>=0, <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e77647f28a49007bb2c1f10fa36f33b55">STORED</a>, <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e3197625a1bb2264943f5a95f236d9973">EXISTS</a>, <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18ecdaa2919bac56fe1090eb3dbb9526472">NOT_FOUND</a>
+<a name="l00286"></a>00286 };
+<a name="l00287"></a>00287
+<a name="l00288"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html">00288</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00289"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#b491d0e009031a4266f9f81e96129309">00289</a> pthread_t thread_id; <span class="comment">/* unique ID of this thread */</span>
+<a name="l00290"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#edc60f547936f4659d10c690f5eeeada">00290</a> <span class="keyword">struct </span>event_base *base; <span class="comment">/* libevent handle this thread uses */</span>
+<a name="l00291"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#a291c9fc61c0ae2e403aa8feeaa59094">00291</a> <span class="keyword">struct </span>event notify_event; <span class="comment">/* listen event for notify pipe */</span>
+<a name="l00292"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#01d0d9093c0f04bda0656d0aa6f170e9">00292</a> <span class="keywordtype">int</span> notify_receive_fd; <span class="comment">/* receiving end of notify pipe */</span>
+<a name="l00293"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#d53e4c5a53ae00ed1f08d8476981c36b">00293</a> <span class="keywordtype">int</span> notify_send_fd; <span class="comment">/* sending end of notify pipe */</span>
+<a name="l00294"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#b81f0ce2ef093d3d50c78d51ab5d4c8c">00294</a> <span class="keyword">struct </span><a class="code" href="structthread__stats.html" title="Stats stored per-thread.">thread_stats</a> <a class="code" href="structstats.html" title="Global stats.">stats</a>; <span class="comment">/* Stats generated by this thread */</span>
+<a name="l00295"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#79dc836742346c8db838951b2d6f46c5">00295</a> <span class="keyword">struct </span><a class="code" href="structconn__queue.html">conn_queue</a> *new_conn_queue; <span class="comment">/* queue of new connections to handle */</span>
+<a name="l00296"></a><a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html#3160d4b7285bf6995ce960b0189da3f5">00296</a> <a class="code" href="structcache__t.html" title="Definition of the structure to keep track of the internal details of the cache allocator...">cache_t</a> *suffix_cache; <span class="comment">/* suffix cache */</span>
+<a name="l00297"></a>00297 } <a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html">LIBEVENT_THREAD</a>;
+<a name="l00298"></a>00298
+<a name="l00302"></a><a class="code" href="memcached_8h.html#6b845d48e30cbb66add29598de2e00a6">00302</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structconn.html">conn</a> <a class="code" href="structconn.html">conn</a>;
+<a name="l00303"></a><a class="code" href="structconn.html">00303</a> <span class="keyword">struct </span><a class="code" href="structconn.html">conn</a> {
+<a name="l00304"></a><a class="code" href="structconn.html#37f7969ba27e8ae9461a1d3b378351d6">00304</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#37f7969ba27e8ae9461a1d3b378351d6">sfd</a>;
+<a name="l00305"></a><a class="code" href="structconn.html#17e40cc90c3669ee5e50df2ded95c3d0">00305</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> <a class="code" href="structconn.html#17e40cc90c3669ee5e50df2ded95c3d0">state</a>;
+<a name="l00306"></a><a class="code" href="structconn.html#b0cc8eac6501657700093908c092ed3e">00306</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#e281f6c321ed03cfb642a50e205177c7">bin_substates</a> <a class="code" href="structconn.html#b0cc8eac6501657700093908c092ed3e">substate</a>;
+<a name="l00307"></a><a class="code" href="structconn.html#f1b2df9ad39a82ce06a008b1b04567c3">00307</a> <span class="keyword">struct </span><a class="code" href="structconn.html#f1b2df9ad39a82ce06a008b1b04567c3">event</a> <a class="code" href="structconn.html#f1b2df9ad39a82ce06a008b1b04567c3">event</a>;
+<a name="l00308"></a><a class="code" href="structconn.html#523af570f5630fb5c1aaf51d87c96abc">00308</a> <span class="keywordtype">short</span> <a class="code" href="structconn.html#523af570f5630fb5c1aaf51d87c96abc">ev_flags</a>;
+<a name="l00309"></a><a class="code" href="structconn.html#d4b85274b88921db50c2a221386ca5fe">00309</a> <span class="keywordtype">short</span> <a class="code" href="structconn.html#d4b85274b88921db50c2a221386ca5fe">which</a>;
+<a name="l00311"></a><a class="code" href="structconn.html#c0b276582776af667fe88bf6a73a57b1">00311</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#c0b276582776af667fe88bf6a73a57b1" title="which events were just triggered">rbuf</a>;
+<a name="l00312"></a><a class="code" href="structconn.html#321f9c23c4a20d15d16630c5648ac41a">00312</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#321f9c23c4a20d15d16630c5648ac41a" title="buffer to read commands into">rcurr</a>;
+<a name="l00313"></a><a class="code" href="structconn.html#fd9d7b8a1c2cdba5edd4772fae8adc23">00313</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#fd9d7b8a1c2cdba5edd4772fae8adc23" title="but if we parsed some already, this is where we stopped">rsize</a>;
+<a name="l00314"></a><a class="code" href="structconn.html#4a7eed4d30ba338ae092ec2011e21982">00314</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#4a7eed4d30ba338ae092ec2011e21982" title="total allocated size of rbuf">rbytes</a>;
+<a name="l00316"></a><a class="code" href="structconn.html#b7bcc3e0bf2d962d2f7aad53c6b523b7">00316</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#b7bcc3e0bf2d962d2f7aad53c6b523b7" title="how much data, starting from rcur, do we have unparsed">wbuf</a>;
+<a name="l00317"></a><a class="code" href="structconn.html#d509acb6e118d4ff9991c4592ed4a544">00317</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#d509acb6e118d4ff9991c4592ed4a544">wcurr</a>;
+<a name="l00318"></a><a class="code" href="structconn.html#db55062a3fa6dcacae12144f8756eb0f">00318</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#db55062a3fa6dcacae12144f8756eb0f">wsize</a>;
+<a name="l00319"></a><a class="code" href="structconn.html#5df3a395efeb81c9ea517a81338ba1df">00319</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#5df3a395efeb81c9ea517a81338ba1df">wbytes</a>;
+<a name="l00321"></a><a class="code" href="structconn.html#3e8b2f5988a9791a105de7534aa8b29f">00321</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> <a class="code" href="structconn.html#3e8b2f5988a9791a105de7534aa8b29f" title="which state to go into after finishing current write">write_and_go</a>;
+<a name="l00322"></a><a class="code" href="structconn.html#6dff98252f504190f1f3412650ef5da4">00322</a> <span class="keywordtype">void</span> *<a class="code" href="structconn.html#6dff98252f504190f1f3412650ef5da4">write_and_free</a>;
+<a name="l00324"></a><a class="code" href="structconn.html#28de9d8a5b9432c6f4ad521fc7875ea8">00324</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#28de9d8a5b9432c6f4ad521fc7875ea8" title="free this memory after finishing writing">ritem</a>;
+<a name="l00325"></a><a class="code" href="structconn.html#47f8791b09c3105ecca911bea9b73406">00325</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#47f8791b09c3105ecca911bea9b73406" title="when we read in an item&amp;#39;s value, it goes here">rlbytes</a>;
<a name="l00326"></a>00326
-<a name="l00333"></a><a class="code" href="structconn.html#7d40cb08fdb16c8cad53b9c78c542e65">00333</a> <span class="keywordtype">void</span> *<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>; <span class="comment">/* for commands set/add/replace */</span>
-<a name="l00334"></a>00334
-<a name="l00335"></a>00335 <span class="comment">/* data for the swallow state */</span>
-<a name="l00336"></a><a class="code" href="structconn.html#5f95cd3a1e8b56dd5af48534162d4188">00336</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#5f95cd3a1e8b56dd5af48534162d4188">sbytes</a>; <span class="comment">/* how many bytes to swallow */</span>
-<a name="l00337"></a>00337
-<a name="l00338"></a>00338 <span class="comment">/* data for the mwrite state */</span>
-<a name="l00339"></a><a class="code" href="structconn.html#7fa506eb093e715dba7c51e373adf332">00339</a> <span class="keyword">struct </span>iovec *<a class="code" href="structconn.html#7fa506eb093e715dba7c51e373adf332">iov</a>;
-<a name="l00340"></a><a class="code" href="structconn.html#a9e54ceb57a50b642bb6733f654f67ef">00340</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#a9e54ceb57a50b642bb6733f654f67ef">iovsize</a>; <span class="comment">/* number of elements allocated in iov[] */</span>
-<a name="l00341"></a><a class="code" href="structconn.html#4bfd124c25febb5c0473a64010a5e04c">00341</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#4bfd124c25febb5c0473a64010a5e04c">iovused</a>; <span class="comment">/* number of elements used in iov[] */</span>
-<a name="l00342"></a>00342
-<a name="l00343"></a><a class="code" href="structconn.html#5ecb2828d6d2bd7d2e1bbe39d16ec5b9">00343</a> <span class="keyword">struct </span>msghdr *<a class="code" href="structconn.html#5ecb2828d6d2bd7d2e1bbe39d16ec5b9">msglist</a>;
-<a name="l00344"></a><a class="code" href="structconn.html#4a88af6a9aa8f5723163ce46109d424e">00344</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#4a88af6a9aa8f5723163ce46109d424e">msgsize</a>; <span class="comment">/* number of elements allocated in msglist[] */</span>
-<a name="l00345"></a><a class="code" href="structconn.html#64b2e5b69fad86aa6f298c055fc96aae">00345</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#64b2e5b69fad86aa6f298c055fc96aae">msgused</a>; <span class="comment">/* number of elements used in msglist[] */</span>
-<a name="l00346"></a><a class="code" href="structconn.html#a154e25e69a11d7837749a50523a60ea">00346</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#a154e25e69a11d7837749a50523a60ea">msgcurr</a>; <span class="comment">/* element in msglist[] being transmitted now */</span>
-<a name="l00347"></a><a class="code" href="structconn.html#dccea2771b5da3455ec501d046bbfbb2">00347</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#dccea2771b5da3455ec501d046bbfbb2">msgbytes</a>; <span class="comment">/* number of bytes in current msg */</span>
-<a name="l00348"></a>00348
-<a name="l00349"></a><a class="code" href="structconn.html#3f8edd0d1efc80f5d9e1f519581d459e">00349</a> <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> **<a class="code" href="structconn.html#3f8edd0d1efc80f5d9e1f519581d459e">ilist</a>; <span class="comment">/* list of items to write out */</span>
-<a name="l00350"></a><a class="code" href="structconn.html#864209402985a2c5fa5a5215f1dfe8dc">00350</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#864209402985a2c5fa5a5215f1dfe8dc">isize</a>;
-<a name="l00351"></a><a class="code" href="structconn.html#496919c8fa5cdbfba62d8d8beb7bddae">00351</a> <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> **<a class="code" href="structconn.html#496919c8fa5cdbfba62d8d8beb7bddae">icurr</a>;
-<a name="l00352"></a><a class="code" href="structconn.html#ecd54059ef51d05fcb5cfdb9c7317903">00352</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#ecd54059ef51d05fcb5cfdb9c7317903">ileft</a>;
-<a name="l00353"></a>00353
-<a name="l00354"></a><a class="code" href="structconn.html#75d646e58527bdaa2416942097938c93">00354</a> <span class="keywordtype">char</span> **<a class="code" href="structconn.html#75d646e58527bdaa2416942097938c93">suffixlist</a>;
-<a name="l00355"></a><a class="code" href="structconn.html#aea0ce1e0d7986281960a6a7a063e701">00355</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#aea0ce1e0d7986281960a6a7a063e701">suffixsize</a>;
-<a name="l00356"></a><a class="code" href="structconn.html#24bdb9aaa257aeacfa8703c6f0a808da">00356</a> <span class="keywordtype">char</span> **<a class="code" href="structconn.html#24bdb9aaa257aeacfa8703c6f0a808da">suffixcurr</a>;
-<a name="l00357"></a><a class="code" href="structconn.html#7b1984060d5b4b2aea26905718cb42c8">00357</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#7b1984060d5b4b2aea26905718cb42c8">suffixleft</a>;
-<a name="l00358"></a>00358
-<a name="l00359"></a><a class="code" href="structconn.html#ef35eff4856a49adaee2299596a00988">00359</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a>; <span class="comment">/* which protocol this connection speaks */</span>
+<a name="l00327"></a>00327 <span class="comment">/* data for the nread state */</span>
+<a name="l00328"></a>00328
+<a name="l00335"></a><a class="code" href="structconn.html#7d40cb08fdb16c8cad53b9c78c542e65">00335</a> <span class="keywordtype">void</span> *<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>; <span class="comment">/* for commands set/add/replace */</span>
+<a name="l00336"></a>00336
+<a name="l00337"></a>00337 <span class="comment">/* data for the swallow state */</span>
+<a name="l00338"></a><a class="code" href="structconn.html#5f95cd3a1e8b56dd5af48534162d4188">00338</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#5f95cd3a1e8b56dd5af48534162d4188">sbytes</a>; <span class="comment">/* how many bytes to swallow */</span>
+<a name="l00339"></a>00339
+<a name="l00340"></a>00340 <span class="comment">/* data for the mwrite state */</span>
+<a name="l00341"></a><a class="code" href="structconn.html#7fa506eb093e715dba7c51e373adf332">00341</a> <span class="keyword">struct </span>iovec *<a class="code" href="structconn.html#7fa506eb093e715dba7c51e373adf332">iov</a>;
+<a name="l00342"></a><a class="code" href="structconn.html#a9e54ceb57a50b642bb6733f654f67ef">00342</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#a9e54ceb57a50b642bb6733f654f67ef">iovsize</a>; <span class="comment">/* number of elements allocated in iov[] */</span>
+<a name="l00343"></a><a class="code" href="structconn.html#4bfd124c25febb5c0473a64010a5e04c">00343</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#4bfd124c25febb5c0473a64010a5e04c">iovused</a>; <span class="comment">/* number of elements used in iov[] */</span>
+<a name="l00344"></a>00344
+<a name="l00345"></a><a class="code" href="structconn.html#5ecb2828d6d2bd7d2e1bbe39d16ec5b9">00345</a> <span class="keyword">struct </span>msghdr *<a class="code" href="structconn.html#5ecb2828d6d2bd7d2e1bbe39d16ec5b9">msglist</a>;
+<a name="l00346"></a><a class="code" href="structconn.html#4a88af6a9aa8f5723163ce46109d424e">00346</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#4a88af6a9aa8f5723163ce46109d424e">msgsize</a>; <span class="comment">/* number of elements allocated in msglist[] */</span>
+<a name="l00347"></a><a class="code" href="structconn.html#64b2e5b69fad86aa6f298c055fc96aae">00347</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#64b2e5b69fad86aa6f298c055fc96aae">msgused</a>; <span class="comment">/* number of elements used in msglist[] */</span>
+<a name="l00348"></a><a class="code" href="structconn.html#a154e25e69a11d7837749a50523a60ea">00348</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#a154e25e69a11d7837749a50523a60ea">msgcurr</a>; <span class="comment">/* element in msglist[] being transmitted now */</span>
+<a name="l00349"></a><a class="code" href="structconn.html#dccea2771b5da3455ec501d046bbfbb2">00349</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#dccea2771b5da3455ec501d046bbfbb2">msgbytes</a>; <span class="comment">/* number of bytes in current msg */</span>
+<a name="l00350"></a>00350
+<a name="l00351"></a><a class="code" href="structconn.html#3f8edd0d1efc80f5d9e1f519581d459e">00351</a> <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> **<a class="code" href="structconn.html#3f8edd0d1efc80f5d9e1f519581d459e">ilist</a>; <span class="comment">/* list of items to write out */</span>
+<a name="l00352"></a><a class="code" href="structconn.html#864209402985a2c5fa5a5215f1dfe8dc">00352</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#864209402985a2c5fa5a5215f1dfe8dc">isize</a>;
+<a name="l00353"></a><a class="code" href="structconn.html#496919c8fa5cdbfba62d8d8beb7bddae">00353</a> <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> **<a class="code" href="structconn.html#496919c8fa5cdbfba62d8d8beb7bddae">icurr</a>;
+<a name="l00354"></a><a class="code" href="structconn.html#ecd54059ef51d05fcb5cfdb9c7317903">00354</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#ecd54059ef51d05fcb5cfdb9c7317903">ileft</a>;
+<a name="l00355"></a>00355
+<a name="l00356"></a><a class="code" href="structconn.html#75d646e58527bdaa2416942097938c93">00356</a> <span class="keywordtype">char</span> **<a class="code" href="structconn.html#75d646e58527bdaa2416942097938c93">suffixlist</a>;
+<a name="l00357"></a><a class="code" href="structconn.html#aea0ce1e0d7986281960a6a7a063e701">00357</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#aea0ce1e0d7986281960a6a7a063e701">suffixsize</a>;
+<a name="l00358"></a><a class="code" href="structconn.html#24bdb9aaa257aeacfa8703c6f0a808da">00358</a> <span class="keywordtype">char</span> **<a class="code" href="structconn.html#24bdb9aaa257aeacfa8703c6f0a808da">suffixcurr</a>;
+<a name="l00359"></a><a class="code" href="structconn.html#7b1984060d5b4b2aea26905718cb42c8">00359</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#7b1984060d5b4b2aea26905718cb42c8">suffixleft</a>;
<a name="l00360"></a>00360
-<a name="l00361"></a>00361 <span class="comment">/* data for UDP clients */</span>
-<a name="l00362"></a><a class="code" href="structconn.html#40f2af0bb917ca015ad366811e950ee0">00362</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#40f2af0bb917ca015ad366811e950ee0">request_id</a>; <span class="comment">/* Incoming UDP request ID, if this is a UDP "connection" */</span>
-<a name="l00363"></a><a class="code" href="structconn.html#cb126c7b0c4b0513fb1bfa40189407d1">00363</a> <span class="keyword">struct </span>sockaddr <a class="code" href="structconn.html#cb126c7b0c4b0513fb1bfa40189407d1">request_addr</a>; <span class="comment">/* Who sent the most recent request */</span>
-<a name="l00364"></a><a class="code" href="structconn.html#d5589e72b5427937e81116f846e20380">00364</a> socklen_t <a class="code" href="structconn.html#d5589e72b5427937e81116f846e20380">request_addr_size</a>;
-<a name="l00365"></a><a class="code" href="structconn.html#c98cb4f13ddb0a4c8682c8764ee21ec0">00365</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#c98cb4f13ddb0a4c8682c8764ee21ec0">hdrbuf</a>; <span class="comment">/* udp packet headers */</span>
-<a name="l00366"></a><a class="code" href="structconn.html#a58fbb1de414bafa4d2fb5d6568194aa">00366</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#a58fbb1de414bafa4d2fb5d6568194aa">hdrsize</a>; <span class="comment">/* number of headers' worth of space is allocated */</span>
-<a name="l00367"></a>00367
-<a name="l00368"></a><a class="code" href="structconn.html#5f59d93a1fb729ab33b66e3cf15e8466">00368</a> <span class="keywordtype">bool</span> <a class="code" href="structconn.html#5f59d93a1fb729ab33b66e3cf15e8466">noreply</a>; <span class="comment">/* True if the reply should not be sent. */</span>
-<a name="l00369"></a>00369 <span class="comment">/* current stats command */</span>
-<a name="l00370"></a>00370 <span class="keyword">struct </span>{
-<a name="l00371"></a><a class="code" href="structconn.html#e58d1fb50279ca7d206e32707ff477f6">00371</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#e58d1fb50279ca7d206e32707ff477f6">buffer</a>;
-<a name="l00372"></a><a class="code" href="structconn.html#b5d5df899a9e2dc1dfc8aec8afa68c64">00372</a> <span class="keywordtype">size_t</span> <a class="code" href="structconn.html#b5d5df899a9e2dc1dfc8aec8afa68c64">size</a>;
-<a name="l00373"></a><a class="code" href="structconn.html#f796a28dffee965d3b331631fbbcc15d">00373</a> <span class="keywordtype">size_t</span> <a class="code" href="structconn.html#f796a28dffee965d3b331631fbbcc15d">offset</a>;
-<a name="l00374"></a>00374 } <a class="code" href="structstats.html" title="Global stats.">stats</a>;
-<a name="l00375"></a>00375
-<a name="l00376"></a>00376 <span class="comment">/* Binary protocol stuff */</span>
-<a name="l00377"></a>00377 <span class="comment">/* This is where the binary header goes */</span>
-<a name="l00378"></a><a class="code" href="structconn.html#4a5d7aea30c74698d48daef7bd8c777d">00378</a> <a class="code" href="unionprotocol__binary__request__header.html" title="Definition of the header structure for a request packet.">protocol_binary_request_header</a> <a class="code" href="structconn.html#4a5d7aea30c74698d48daef7bd8c777d">binary_header</a>;
-<a name="l00379"></a><a class="code" href="structconn.html#17e41fed262e75fc9a78c5df4828dd10">00379</a> uint64_t <a class="code" href="structconn.html#17e41fed262e75fc9a78c5df4828dd10">cas</a>; <span class="comment">/* the cas to return */</span>
-<a name="l00380"></a><a class="code" href="structconn.html#57c6c7f94cf0969745a2683ebd17e0e7">00380</a> <span class="keywordtype">short</span> <a class="code" href="structconn.html#57c6c7f94cf0969745a2683ebd17e0e7">cmd</a>; <span class="comment">/* current command being processed */</span>
-<a name="l00381"></a><a class="code" href="structconn.html#60681e2946e7ee0f6fa3433168764a3e">00381</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#60681e2946e7ee0f6fa3433168764a3e">opaque</a>;
-<a name="l00382"></a><a class="code" href="structconn.html#5d99d3fe7e8dcc919ea5d94dbadcc7cd">00382</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#5d99d3fe7e8dcc919ea5d94dbadcc7cd">keylen</a>;
-<a name="l00383"></a><a class="code" href="structconn.html#833a1cdb64edd1dd0784c16389135bba">00383</a> <a class="code" href="structconn.html">conn</a> *<a class="code" href="structconn.html#833a1cdb64edd1dd0784c16389135bba">next</a>; <span class="comment">/* Used for generating a list of conn structures */</span>
-<a name="l00384"></a><a class="code" href="structconn.html#40d01c887098f08dfc57968eec68d52f">00384</a> <a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html">LIBEVENT_THREAD</a> *<a class="code" href="structconn.html#40d01c887098f08dfc57968eec68d52f">thread</a>; <span class="comment">/* Pointer to the thread object serving this connection */</span>
-<a name="l00385"></a>00385 };
-<a name="l00386"></a>00386
-<a name="l00387"></a>00387
-<a name="l00388"></a>00388 <span class="comment">/* current time of day (updated periodically) */</span>
-<a name="l00389"></a>00389 <span class="keyword">extern</span> <span class="keyword">volatile</span> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> <a class="code" href="globals_8c.html#21b2a3d4ff751fe99cdca2d14babc559">current_time</a>;
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391 <span class="comment">/*</span>
-<a name="l00392"></a>00392 <span class="comment"> * Functions</span>
-<a name="l00393"></a>00393 <span class="comment"> */</span>
-<a name="l00394"></a>00394 <span class="keywordtype">void</span> <a class="code" href="memcached_8c.html#b3208d47b8d38af6818f6ced54e4d62c">do_accept_new_conns</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> do_accept);
-<a name="l00395"></a>00395 <span class="keywordtype">char</span> *<a class="code" href="memcached_8c.html#fecf346316b0c6852f5568ecd6440cf7">do_add_delta</a>(<a class="code" href="structconn.html">conn</a> *c, <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> *<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>, <span class="keyword">const</span> <span class="keywordtype">bool</span> incr, <span class="keyword">const</span> int64_t delta,
-<a name="l00396"></a>00396 <span class="keywordtype">char</span> *buf);
-<a name="l00397"></a>00397 <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e">store_item_type</a> <a class="code" href="memcached_8c.html#7d76af30e49baebcf82c13f241352544">do_store_item</a>(<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> *<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>, <span class="keywordtype">int</span> comm, <a class="code" href="structconn.html">conn</a>* c);
-<a name="l00398"></a>00398 <a class="code" href="structconn.html">conn</a> *<a class="code" href="memcached_8c.html#f6f04a62bdce44ee52f3a247f6df38ee">conn_new</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> sfd, <span class="keyword">const</span> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> init_state, <span class="keyword">const</span> <span class="keywordtype">int</span> event_flags, <span class="keyword">const</span> <span class="keywordtype">int</span> read_buffer_size, <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a> prot, <span class="keyword">struct</span> event_base *base);
-<a name="l00399"></a>00399 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="daemon_8c.html#78ff9cfa411dda44b12c1dd5e5d078e6">daemonize</a>(<span class="keywordtype">int</span> nochdir, <span class="keywordtype">int</span> noclose);
-<a name="l00400"></a>00400
-<a name="l00401"></a>00401
-<a name="l00402"></a>00402 <span class="preprocessor">#include "<a class="code" href="stats_8h.html">stats.h</a>"</span>
-<a name="l00403"></a>00403 <span class="preprocessor">#include "<a class="code" href="slabs_8h.html">slabs.h</a>"</span>
-<a name="l00404"></a>00404 <span class="preprocessor">#include "<a class="code" href="assoc_8h.html">assoc.h</a>"</span>
-<a name="l00405"></a>00405 <span class="preprocessor">#include "<a class="code" href="items_8h.html">items.h</a>"</span>
-<a name="l00406"></a>00406 <span class="preprocessor">#include "<a class="code" href="trace_8h.html">trace.h</a>"</span>
-<a name="l00407"></a>00407 <span class="preprocessor">#include "<a class="code" href="hash_8h.html">hash.h</a>"</span>
-<a name="l00408"></a>00408 <span class="preprocessor">#include "<a class="code" href="util_8h.html">util.h</a>"</span>
-<a name="l00409"></a>00409
-<a name="l00410"></a>00410 <span class="comment">/*</span>
-<a name="l00411"></a>00411 <span class="comment"> * Functions such as the libevent-related calls that need to do cross-thread</span>
-<a name="l00412"></a>00412 <span class="comment"> * communication in multithreaded mode (rather than actually doing the work</span>
-<a name="l00413"></a>00413 <span class="comment"> * in the current thread) are called via "dispatch_" frontends, which are</span>
-<a name="l00414"></a>00414 <span class="comment"> * also #define-d to directly call the underlying code in singlethreaded mode.</span>
-<a name="l00415"></a>00415 <span class="comment"> */</span>
-<a name="l00416"></a>00416
-<a name="l00417"></a>00417 <span class="keywordtype">void</span> <a class="code" href="memcached_8h.html#79051074704249cac4424f10d4606fe3">thread_init</a>(<span class="keywordtype">int</span> nthreads, <span class="keyword">struct</span> event_base *main_base);
-<a name="l00418"></a>00418 <span class="keywordtype">int</span> <a class="code" href="memcached_8h.html#1e1a527b3b57614f719a40d83941b8fc">dispatch_event_add</a>(<span class="keywordtype">int</span> thread, <a class="code" href="structconn.html">conn</a> *c);
-<a name="l00419"></a>00419 <span class="keywordtype">void</span> <a class="code" href="memcached_8h.html#04c3e20b71072223654c0bbf7c266173">dispatch_conn_new</a>(<span class="keywordtype">int</span> sfd, <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> init_state, <span class="keywordtype">int</span> event_flags, <span class="keywordtype">int</span> read_buffer_size, <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a> prot);
-<a name="l00420"></a>00420
-<a name="l00421"></a>00421 <span class="comment">/* Lock wrappers for cache functions that are called from main loop. */</span>
-<a name="l00422"></a>00422 <span class="keywordtype">char</span> *<a class="code" href="memcached_8h.html#9541b45b4a663dbdc0c69e8a7334700e">add_delta</a>(<a class="code" href="structconn.html">conn</a> *c, <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> *<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> incr, <span class="keyword">const</span> int64_t delta,
-<a name="l00423"></a>00423 <span class="keywordtype">char</span> *buf);
-<a name="l00424"></a>00424 <span class="keywordtype">void</span> <a class="code" href="memcached_8h.html#4626562440107c11cdd7cc07ba28f806">accept_new_conns</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> do_accept);
-<a name="l00425"></a>00425 <a class="code" href="structconn.html">conn</a> *<a class="code" href="memcached_8c.html#9e2eb84fb0639f05a759367bf8b5ddb9">conn_from_freelist</a>(<span class="keywordtype">void</span>);
-<a name="l00426"></a>00426 <span class="keywordtype">bool</span> <a class="code" href="memcached_8c.html#fc9ec43a3d82ca2bbaa216539353bfa2">conn_add_to_freelist</a>(<a class="code" href="structconn.html">conn</a> *c);
-<a name="l00427"></a>00427 <span class="keywordtype">char</span> *<a class="code" href="memcached_8c.html#396712f7649a6f9fe31f4ff91f70c0a3">suffix_from_freelist</a>(<span class="keywordtype">void</span>);
-<a name="l00428"></a>00428 <span class="keywordtype">bool</span> <a class="code" href="memcached_8c.html#68f689a3de71d789243a8983a0db3c79">suffix_add_to_freelist</a>(<span class="keywordtype">char</span> *s);
+<a name="l00361"></a><a class="code" href="structconn.html#ef35eff4856a49adaee2299596a00988">00361</a> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a>; <span class="comment">/* which protocol this connection speaks */</span>
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363 <span class="comment">/* data for UDP clients */</span>
+<a name="l00364"></a><a class="code" href="structconn.html#40f2af0bb917ca015ad366811e950ee0">00364</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#40f2af0bb917ca015ad366811e950ee0">request_id</a>; <span class="comment">/* Incoming UDP request ID, if this is a UDP "connection" */</span>
+<a name="l00365"></a><a class="code" href="structconn.html#cb126c7b0c4b0513fb1bfa40189407d1">00365</a> <span class="keyword">struct </span>sockaddr <a class="code" href="structconn.html#cb126c7b0c4b0513fb1bfa40189407d1">request_addr</a>; <span class="comment">/* Who sent the most recent request */</span>
+<a name="l00366"></a><a class="code" href="structconn.html#d5589e72b5427937e81116f846e20380">00366</a> socklen_t <a class="code" href="structconn.html#d5589e72b5427937e81116f846e20380">request_addr_size</a>;
+<a name="l00367"></a><a class="code" href="structconn.html#c98cb4f13ddb0a4c8682c8764ee21ec0">00367</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#c98cb4f13ddb0a4c8682c8764ee21ec0">hdrbuf</a>; <span class="comment">/* udp packet headers */</span>
+<a name="l00368"></a><a class="code" href="structconn.html#a58fbb1de414bafa4d2fb5d6568194aa">00368</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#a58fbb1de414bafa4d2fb5d6568194aa">hdrsize</a>; <span class="comment">/* number of headers' worth of space is allocated */</span>
+<a name="l00369"></a>00369
+<a name="l00370"></a><a class="code" href="structconn.html#5f59d93a1fb729ab33b66e3cf15e8466">00370</a> <span class="keywordtype">bool</span> <a class="code" href="structconn.html#5f59d93a1fb729ab33b66e3cf15e8466">noreply</a>; <span class="comment">/* True if the reply should not be sent. */</span>
+<a name="l00371"></a>00371 <span class="comment">/* current stats command */</span>
+<a name="l00372"></a>00372 <span class="keyword">struct </span>{
+<a name="l00373"></a><a class="code" href="structconn.html#e58d1fb50279ca7d206e32707ff477f6">00373</a> <span class="keywordtype">char</span> *<a class="code" href="structconn.html#e58d1fb50279ca7d206e32707ff477f6">buffer</a>;
+<a name="l00374"></a><a class="code" href="structconn.html#b5d5df899a9e2dc1dfc8aec8afa68c64">00374</a> <span class="keywordtype">size_t</span> <a class="code" href="structconn.html#b5d5df899a9e2dc1dfc8aec8afa68c64">size</a>;
+<a name="l00375"></a><a class="code" href="structconn.html#f796a28dffee965d3b331631fbbcc15d">00375</a> <span class="keywordtype">size_t</span> <a class="code" href="structconn.html#f796a28dffee965d3b331631fbbcc15d">offset</a>;
+<a name="l00376"></a>00376 } <a class="code" href="structstats.html" title="Global stats.">stats</a>;
+<a name="l00377"></a>00377
+<a name="l00378"></a>00378 <span class="comment">/* Binary protocol stuff */</span>
+<a name="l00379"></a>00379 <span class="comment">/* This is where the binary header goes */</span>
+<a name="l00380"></a><a class="code" href="structconn.html#4a5d7aea30c74698d48daef7bd8c777d">00380</a> <a class="code" href="unionprotocol__binary__request__header.html" title="Definition of the header structure for a request packet.">protocol_binary_request_header</a> <a class="code" href="structconn.html#4a5d7aea30c74698d48daef7bd8c777d">binary_header</a>;
+<a name="l00381"></a><a class="code" href="structconn.html#17e41fed262e75fc9a78c5df4828dd10">00381</a> uint64_t <a class="code" href="structconn.html#17e41fed262e75fc9a78c5df4828dd10">cas</a>; <span class="comment">/* the cas to return */</span>
+<a name="l00382"></a><a class="code" href="structconn.html#57c6c7f94cf0969745a2683ebd17e0e7">00382</a> <span class="keywordtype">short</span> <a class="code" href="structconn.html#57c6c7f94cf0969745a2683ebd17e0e7">cmd</a>; <span class="comment">/* current command being processed */</span>
+<a name="l00383"></a><a class="code" href="structconn.html#60681e2946e7ee0f6fa3433168764a3e">00383</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#60681e2946e7ee0f6fa3433168764a3e">opaque</a>;
+<a name="l00384"></a><a class="code" href="structconn.html#5d99d3fe7e8dcc919ea5d94dbadcc7cd">00384</a> <span class="keywordtype">int</span> <a class="code" href="structconn.html#5d99d3fe7e8dcc919ea5d94dbadcc7cd">keylen</a>;
+<a name="l00385"></a><a class="code" href="structconn.html#833a1cdb64edd1dd0784c16389135bba">00385</a> <a class="code" href="structconn.html">conn</a> *<a class="code" href="structconn.html#833a1cdb64edd1dd0784c16389135bba">next</a>; <span class="comment">/* Used for generating a list of conn structures */</span>
+<a name="l00386"></a><a class="code" href="structconn.html#40d01c887098f08dfc57968eec68d52f">00386</a> <a class="code" href="struct_l_i_b_e_v_e_n_t___t_h_r_e_a_d.html">LIBEVENT_THREAD</a> *<a class="code" href="structconn.html#40d01c887098f08dfc57968eec68d52f">thread</a>; <span class="comment">/* Pointer to the thread object serving this connection */</span>
+<a name="l00387"></a>00387 };
+<a name="l00388"></a>00388
+<a name="l00389"></a>00389
+<a name="l00390"></a>00390 <span class="comment">/* current time of day (updated periodically) */</span>
+<a name="l00391"></a>00391 <span class="keyword">extern</span> <span class="keyword">volatile</span> <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> <a class="code" href="globals_8c.html#21b2a3d4ff751fe99cdca2d14babc559">current_time</a>;
+<a name="l00392"></a>00392
+<a name="l00393"></a>00393 <span class="comment">/*</span>
+<a name="l00394"></a>00394 <span class="comment"> * Functions</span>
+<a name="l00395"></a>00395 <span class="comment"> */</span>
+<a name="l00396"></a>00396 <span class="keywordtype">void</span> <a class="code" href="memcached_8c.html#b3208d47b8d38af6818f6ced54e4d62c">do_accept_new_conns</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> do_accept);
+<a name="l00397"></a>00397 <span class="keywordtype">char</span> *<a class="code" href="memcached_8c.html#fecf346316b0c6852f5568ecd6440cf7">do_add_delta</a>(<a class="code" href="structconn.html">conn</a> *c, <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> *<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>, <span class="keyword">const</span> <span class="keywordtype">bool</span> incr, <span class="keyword">const</span> int64_t delta,
+<a name="l00398"></a>00398 <span class="keywordtype">char</span> *buf);
+<a name="l00399"></a>00399 <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#1cf8921762294d73fe28150b7fa2a18e">store_item_type</a> <a class="code" href="memcached_8c.html#7d76af30e49baebcf82c13f241352544">do_store_item</a>(<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> *<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>, <span class="keywordtype">int</span> comm, <a class="code" href="structconn.html">conn</a>* c);
+<a name="l00400"></a>00400 <a class="code" href="structconn.html">conn</a> *<a class="code" href="memcached_8c.html#f6f04a62bdce44ee52f3a247f6df38ee">conn_new</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> sfd, <span class="keyword">const</span> <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> init_state, <span class="keyword">const</span> <span class="keywordtype">int</span> event_flags, <span class="keyword">const</span> <span class="keywordtype">int</span> read_buffer_size, <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a> prot, <span class="keyword">struct</span> event_base *base);
+<a name="l00401"></a>00401 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="daemon_8c.html#78ff9cfa411dda44b12c1dd5e5d078e6">daemonize</a>(<span class="keywordtype">int</span> nochdir, <span class="keywordtype">int</span> noclose);
+<a name="l00402"></a>00402
+<a name="l00403"></a>00403
+<a name="l00404"></a>00404 <span class="preprocessor">#include "<a class="code" href="stats_8h.html">stats.h</a>"</span>
+<a name="l00405"></a>00405 <span class="preprocessor">#include "<a class="code" href="slabs_8h.html">slabs.h</a>"</span>
+<a name="l00406"></a>00406 <span class="preprocessor">#include "<a class="code" href="assoc_8h.html">assoc.h</a>"</span>
+<a name="l00407"></a>00407 <span class="preprocessor">#include "<a class="code" href="items_8h.html">items.h</a>"</span>
+<a name="l00408"></a>00408 <span class="preprocessor">#include "<a class="code" href="trace_8h.html">trace.h</a>"</span>
+<a name="l00409"></a>00409 <span class="preprocessor">#include "<a class="code" href="hash_8h.html">hash.h</a>"</span>
+<a name="l00410"></a>00410 <span class="preprocessor">#include "<a class="code" href="util_8h.html">util.h</a>"</span>
+<a name="l00411"></a>00411
+<a name="l00412"></a>00412 <span class="comment">/*</span>
+<a name="l00413"></a>00413 <span class="comment"> * Functions such as the libevent-related calls that need to do cross-thread</span>
+<a name="l00414"></a>00414 <span class="comment"> * communication in multithreaded mode (rather than actually doing the work</span>
+<a name="l00415"></a>00415 <span class="comment"> * in the current thread) are called via "dispatch_" frontends, which are</span>
+<a name="l00416"></a>00416 <span class="comment"> * also #define-d to directly call the underlying code in singlethreaded mode.</span>
+<a name="l00417"></a>00417 <span class="comment"> */</span>
+<a name="l00418"></a>00418
+<a name="l00419"></a>00419 <span class="keywordtype">void</span> <a class="code" href="memcached_8h.html#79051074704249cac4424f10d4606fe3">thread_init</a>(<span class="keywordtype">int</span> nthreads, <span class="keyword">struct</span> event_base *main_base);
+<a name="l00420"></a>00420 <span class="keywordtype">int</span> <a class="code" href="memcached_8h.html#1e1a527b3b57614f719a40d83941b8fc">dispatch_event_add</a>(<span class="keywordtype">int</span> thread, <a class="code" href="structconn.html">conn</a> *c);
+<a name="l00421"></a>00421 <span class="keywordtype">void</span> <a class="code" href="memcached_8h.html#04c3e20b71072223654c0bbf7c266173">dispatch_conn_new</a>(<span class="keywordtype">int</span> sfd, <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#397f77d103168a504b5fbc801538f2a7" title="Possible states of a connection.">conn_states</a> init_state, <span class="keywordtype">int</span> event_flags, <span class="keywordtype">int</span> read_buffer_size, <span class="keyword">enum</span> <a class="code" href="memcached_8h.html#dd2ec924c0f221790d7235ffb2e615cd">protocol</a> prot);
+<a name="l00422"></a>00422
+<a name="l00423"></a>00423 <span class="comment">/* Lock wrappers for cache functions that are called from main loop. */</span>
+<a name="l00424"></a>00424 <span class="keywordtype">char</span> *<a class="code" href="memcached_8h.html#9541b45b4a663dbdc0c69e8a7334700e">add_delta</a>(<a class="code" href="structconn.html">conn</a> *c, <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> *<a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> incr, <span class="keyword">const</span> int64_t delta,
+<a name="l00425"></a>00425 <span class="keywordtype">char</span> *buf);
+<a name="l00426"></a>00426 <span class="keywordtype">void</span> <a class="code" href="memcached_8h.html#4626562440107c11cdd7cc07ba28f806">accept_new_conns</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> do_accept);
+<a name="l00427"></a>00427 <a class="code" href="structconn.html">conn</a> *<a class="code" href="memcached_8c.html#9e2eb84fb0639f05a759367bf8b5ddb9">conn_from_freelist</a>(<span class="keywordtype">void</span>);
+<a name="l00428"></a>00428 <span class="keywordtype">bool</span> <a class="code" href="memcached_8c.html#fc9ec43a3d82ca2bbaa216539353bfa2">conn_add_to_freelist</a>(<a class="code" href="structconn.html">conn</a> *c);
<a name="l00429"></a>00429 <span class="keywordtype">int</span> <a class="code" href="memcached_8h.html#f354b347a944d96a5a7644f9e84e7e7e">is_listen_thread</a>(<span class="keywordtype">void</span>);
<a name="l00430"></a>00430 <a class="code" href="struct__stritem.html" title="Structure for storing items within memcached.">item</a> *<a class="code" href="memcached_8h.html#d69cc14d059b72c07e1f0b550b1922c6">item_alloc</a>(<span class="keywordtype">char</span> *key, <span class="keywordtype">size_t</span> nkey, <span class="keywordtype">int</span> flags, <a class="code" href="memcached_8h.html#602ccc3d124c1c56b6afe0ae93e04bc4" title="Time relative to server start.">rel_time_t</a> exptime, <span class="keywordtype">int</span> nbytes);
<a name="l00431"></a>00431 <span class="keywordtype">char</span> *<a class="code" href="memcached_8h.html#66464e83dfd7f7e38702614fb645ba4c">item_cachedump</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="slabs_8c.html#89e035684df4bb1ef8b0852cb2c20f00" title="Given object size, return id to use when allocating/freeing memory for object 0 means...">slabs_clsid</a>, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> limit, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bytes);
@@ -430,7 +430,7 @@
<a name="l00465"></a><a class="code" href="memcached_8h.html#217a0bd562b98ae8c2ffce44935351e1">00465</a> <span class="preprocessor">#define likely(x) __builtin_expect((x),1)</span>
<a name="l00466"></a><a class="code" href="memcached_8h.html#c6c45889010c1bd68631771b64f18101">00466</a> <span class="preprocessor"></span><span class="preprocessor">#define unlikely(x) __builtin_expect((x),0)</span>
</pre></div></div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Fri Apr 17 15:14:53 2009 for memcached by&nbsp;
+<hr size="1"><address style="text-align: right;"><small>Generated on Fri Apr 17 16:28:06 2009 for memcached by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>