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

📄 wwwapi_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00143     name_value_pair* free_pairs;00144 00145     <span class="keywordtype">char</span>* extendBuffer(size_t inc);00146 00147 00148     <span class="comment">//</span>00149     <span class="comment">// Deallocate all resources hold by connection. It is not possible to </span>00150     <span class="comment">// call get_value() or reply() method after this. Method reset()</span>00151     <span class="comment">// is implicitly called by WWWapi::get() method.</span>00152     <span class="comment">//</span>00153     <span class="keywordtype">void</span> reset();00154 00155     <span class="comment">//</span>00156     <span class="comment">// Unpack requests paramters</span>00157     <span class="comment">//</span>00158     <span class="keywordtype">char</span>* unpack(<span class="keywordtype">char</span>* body, size_t body_length);00159 };00160 00161 00162 <span class="keyword">class </span>FASTDB_DLL_ENTRY WWWapi { 00163   <span class="keyword">public</span>:00164     <span class="keyword">struct </span>dispatcher { 00165         <span class="keywordtype">char</span> <span class="keyword">const</span>*         page;00166         WWWconnection::handler func;00167         <span class="comment">// filled by contracutor of WWWapi</span>00168         <span class="keywordtype">unsigned</span>            hash_code;00169         dispatcher*         collision_chain;00170     };00171 00172   <span class="keyword">protected</span>:00173     socket_t*   sock;00174     <span class="keywordtype">bool</span>        canceled;00175     <span class="keywordtype">char</span>*       address;00176     <a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db;00177     <span class="keyword">enum</span> { hash_table_size = 113  };00178     dispatcher* hash_table[hash_table_size];00179 00180     <span class="keywordtype">bool</span> dispatch(WWWconnection&amp; con, <span class="keywordtype">char</span>* page);00181 00182   <span class="keyword">public</span>:00183     WWWapi(<a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db, <span class="keywordtype">int</span> n_handlers, dispatcher* dispatch_table);00184     <span class="keyword">virtual</span>~WWWapi();00185 00186     <span class="comment">//</span>00187     <span class="comment">// Bind and listen socket</span>00188     <span class="comment">//</span>00189     <span class="keywordtype">bool</span> open(<span class="keywordtype">char</span> <span class="keyword">const</span>* socket_address = <span class="stringliteral">"localhost:80"</span>, 00190               socket_t::socket_domain domain = socket_t::sock_global_domain, 00191               <span class="keywordtype">int</span> listen_queue = DEFAULT_LISTEN_QUEUE_SIZE);00192 00193 00194     <span class="comment">//</span>00195     <span class="comment">// Read and execute requests</span>00196     <span class="comment">//</span>00197     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> serve(WWWconnection&amp; con) = 0;00198 00199     <span class="comment">//</span>00200     <span class="comment">// Accept new connection by the socket</span>00201     <span class="comment">//</span>00202     <span class="keywordtype">bool</span> connect(WWWconnection&amp; con);00203 00204     <span class="comment">//</span>00205     <span class="comment">// Cancel acception of connections</span>00206     <span class="comment">// </span>00207     <span class="keywordtype">void</span> cancel();00208 00209     <span class="comment">//</span>00210     <span class="comment">// Close socket</span>00211     <span class="comment">// </span>00212     <span class="keywordtype">void</span> close();00213 };00214 00215 00216 <span class="comment">//</span>00217 <span class="comment">// Interaction with WWW server by means of CGI protocol and CGIatub program</span>00218 <span class="comment">//</span>00219 <span class="keyword">class </span>FASTDB_DLL_ENTRY CGIapi : <span class="keyword">public</span> WWWapi { 00220   <span class="keyword">public</span>:00221     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> serve(WWWconnection&amp; con);00222 00223     CGIapi(<a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db, <span class="keywordtype">int</span> n_handlers, dispatcher* dispatch_table) 00224     : WWWapi(db, n_handlers, dispatch_table) {}00225 };00226 00227     00228 <span class="comment">// </span>00229 <span class="comment">// Built-in implementation of sunset of subset of HTTP protocol</span>00230 <span class="comment">//</span>00231 <span class="keyword">class </span>FASTDB_DLL_ENTRY HTTPapi : <span class="keyword">public</span> WWWapi { 00232   <span class="keyword">protected</span>:00233     time_t connectionHoldTimeout;00234     <span class="keywordtype">bool</span>   keepConnectionAlive;00235 00236     <span class="keywordtype">bool</span> handleRequest(WWWconnection&amp; con, <span class="keywordtype">char</span>* begin, <span class="keywordtype">char</span>* end, 00237                        <span class="keywordtype">char</span>* host, <span class="keywordtype">bool</span>&amp; result);00238 00239   <span class="keyword">public</span>:00240     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> serve(WWWconnection&amp; con);00241 00242     HTTPapi(<a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db, <span class="keywordtype">int</span> n_handlers, dispatcher* dispatch_table, 00243             <span class="keywordtype">bool</span> persistentConnections = <span class="keyword">false</span>,00244             time_t connectionHoldTimeoutSec = WAIT_FOREVER) 00245     : WWWapi(db, n_handlers, dispatch_table) 00246     {00247         keepConnectionAlive = persistentConnections;00248         connectionHoldTimeout = connectionHoldTimeoutSec;00249     }00250 };00251 00252 <span class="keyword">class </span>FASTDB_DLL_ENTRY QueueManager { 00253     WWWconnection*   connectionPool;00254     WWWconnection*   freeList;00255     WWWconnection*   waitList;00256     dbMutex          mutex;00257     dbLocalSemaphore go;00258     dbLocalEvent     done;00259     dbThread*        threads;00260     <span class="keywordtype">int</span>              nThreads;00261     WWWapi*          server;00262     <a class="code" href="classdbDatabase.html">dbDatabase</a>&amp;      db;00263 00264     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc handleThread(<span class="keywordtype">void</span>* arg);00265     <span class="keywordtype">void</span> handle();00266     00267   <span class="keyword">public</span>:00268     <span class="keywordtype">void</span> stop();00269     <span class="keywordtype">void</span> start();00270 00271     QueueManager(WWWapi&amp; api, <span class="comment">// WWWapi should be opened</span>00272                  <a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db,00273                  <span class="keywordtype">int</span>     nThreads = 8, 00274                  <span class="keywordtype">int</span>     connectionQueueLen = 64);00275     ~QueueManager();00276 };00277 00278 00279 END_FASTDB_NAMESPACE00280 00281 <span class="preprocessor">#endif</span>00282 <span class="preprocessor"></span>00283 00284 </pre></div><hr><address style="align: right;"><small>Generated on Mon Oct 23 13:23:58 2006 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>

⌨️ 快捷键说明

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