⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cliproto_8h-source.html

📁 FastDb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00142 00143 <span class="keyword">inline</span> <span class="keywordtype">void</span> pack2(int2&amp; val) { 00144 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00145 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00146 <span class="preprocessor"></span>    val = htons(val);00147 <span class="preprocessor">#else</span>00148 <span class="preprocessor"></span>    pack2((<span class="keywordtype">char</span>*)&amp;val, val); 00149 <span class="preprocessor">#endif</span>00150 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00151 <span class="preprocessor"></span>}00152 00153 00154 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack4(<span class="keywordtype">char</span>* dst, int4 val) { 00155     *dst++ = char(val &gt;&gt; 24);00156     *dst++ = char(val &gt;&gt; 16);     00157     *dst++ = char(val &gt;&gt; 8); 00158     *dst++ = char(val);00159     <span class="keywordflow">return</span> dst;00160 }00161 00162 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack4(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00163     <span class="keywordflow">return</span> pack4(dst, *(int4*)src); 00164 }00165 00166 <span class="keyword">inline</span> <span class="keywordtype">void</span> pack4(int4&amp; val) { 00167 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00168 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00169 <span class="preprocessor"></span>    val = htonl(val);00170 <span class="preprocessor">#else</span>00171 <span class="preprocessor"></span>    pack4((<span class="keywordtype">char</span>*)&amp;val, val); 00172 <span class="preprocessor">#endif</span>00173 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00174 <span class="preprocessor"></span>}00175 00176 00177 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack8(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00178 <span class="preprocessor">#if BYTE_ORDER == BIG_ENDIAN</span>00179 <span class="preprocessor"></span>    <span class="keywordflow">return</span> pack4( pack4(dst, src), src + 4);00180 <span class="preprocessor">#else</span>00181 <span class="preprocessor"></span>    <span class="keywordflow">return</span> pack4( pack4(dst, src + 4), src);00182 <span class="preprocessor">#endif</span>00183 <span class="preprocessor"></span>}00184 00185 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack8(<span class="keywordtype">char</span>* dst, db_int8 val) { 00186     <span class="keywordflow">return</span> pack8(dst, (<span class="keywordtype">char</span>*)&amp;val);00187 }00188 00189 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack_oid(<span class="keywordtype">char</span>* dst, cli_oid_t oid)00190 {00191     <span class="keywordflow">return</span> (<span class="keyword">sizeof</span>(oid) == 4) ? pack4(dst, oid) : pack8(dst, (char*)&amp;oid);00192 }00193 00194 <span class="keyword">inline</span> int2 unpack2(<span class="keywordtype">char</span>* src) { 00195     nat1* s = (nat1*)src;00196     <span class="keywordflow">return</span> (s[0] &lt;&lt; 8) + s[1]; 00197 }00198 00199 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack2(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00200     *(int2*)dst = unpack2(src);00201     <span class="keywordflow">return</span> src + 2;00202 }00203 00204 <span class="keyword">inline</span> <span class="keywordtype">void</span>  unpack2(int2&amp; val) { 00205 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00206 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00207 <span class="preprocessor"></span>    val = ntohs(val);00208 <span class="preprocessor">#else</span>00209 <span class="preprocessor"></span>    val = unpack2((<span class="keywordtype">char</span>*)&amp;val); 00210 <span class="preprocessor">#endif</span>00211 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00212 <span class="preprocessor"></span>}00213 00214 00215 <span class="keyword">inline</span> int4  unpack4(<span class="keywordtype">char</span>* src) { 00216     nat1* s = (nat1*)src;00217     <span class="keywordflow">return</span> (((((s[0] &lt;&lt; 8) + s[1]) &lt;&lt; 8) + s[2]) &lt;&lt; 8) + s[3];00218 } 00219 00220 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack4(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00221     *(int4*)dst = unpack4(src);00222     <span class="keywordflow">return</span> src + 4;00223 }00224 00225 <span class="keyword">inline</span> <span class="keywordtype">void</span> unpack4(int4&amp; val) { 00226 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00227 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00228 <span class="preprocessor"></span>    val = ntohl(val);00229 <span class="preprocessor">#else</span>00230 <span class="preprocessor"></span>    val = unpack4((<span class="keywordtype">char</span>*)&amp;val); 00231 <span class="preprocessor">#endif</span>00232 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00233 <span class="preprocessor"></span>}00234 00235 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack8(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00236 <span class="preprocessor">#if BYTE_ORDER == BIG_ENDIAN</span>00237 <span class="preprocessor"></span>    *(int4*)dst = unpack4(src);00238     *((int4*)dst+1) = unpack4(src+4);00239 <span class="preprocessor">#else</span>00240 <span class="preprocessor"></span>    *(int4*)dst = unpack4(src+4);00241     *((int4*)dst+1) = unpack4(src);00242 <span class="preprocessor">#endif</span>00243 <span class="preprocessor"></span>    <span class="keywordflow">return</span> src + 8;00244 }00245 00246 <span class="keyword">inline</span> db_int8 unpack8(<span class="keywordtype">char</span>* src) { 00247     db_int8 val;00248     unpack8((<span class="keywordtype">char</span>*)&amp;val, src);00249     <span class="keywordflow">return</span> val;00250 }00251 00252 <span class="keyword">inline</span> cli_oid_t unpack_oid(<span class="keywordtype">char</span>* src)00253 {00254     cli_oid_t oid;00255     <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(oid) == 4) {00256         oid = unpack4(src);00257     } <span class="keywordflow">else</span> { 00258         unpack8((<span class="keywordtype">char</span>*)&amp;oid, src);00259     }00260     <span class="keywordflow">return</span> oid;00261 }00262 00263 <span class="keyword">struct </span>cli_request { 00264     int4 length;00265     int4 cmd;00266     int4 stmt_id;00267     00268     <span class="keywordtype">void</span> pack() { 00269         pack4(length);00270         pack4(cmd);00271         pack4(stmt_id);00272     }00273 00274     <span class="keywordtype">void</span> unpack() { 00275         unpack4(length);00276         unpack4(cmd);00277         unpack4(stmt_id);00278     }00279 };00280 00281 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Feb 12 13:04:48 2004 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.5 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -