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

📄 wwwapi_8h-source.html

📁 FastDb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00141     name_value_pair* free_pairs;00142 00143     <span class="keywordtype">char</span>* extendBuffer(size_t inc);00144 00145 00146     <span class="comment">//</span>00147     <span class="comment">// Deallocate all resources hold by connection. It is not possible to </span>00148     <span class="comment">// call get_value() or reply() method after this. Method reset()</span>00149     <span class="comment">// is implicitly called by WWWapi::get() method.</span>00150     <span class="comment">//</span>00151     <span class="keywordtype">void</span> reset();00152 00153     <span class="comment">//</span>00154     <span class="comment">// Unpack requests paramters</span>00155     <span class="comment">//</span>00156     <span class="keywordtype">char</span>* unpack(<span class="keywordtype">char</span>* body, size_t body_length);00157 };00158 00159 00160 <span class="keyword">class </span>FASTDB_DLL_ENTRY WWWapi { 00161   <span class="keyword">public</span>:00162     <span class="keyword">struct </span>dispatcher { 00163         <span class="keywordtype">char</span> <span class="keyword">const</span>*         page;00164         WWWconnection::handler func;00165         <span class="comment">// filled by contracutor of WWWapi</span>00166         <span class="keywordtype">unsigned</span>            hash_code;00167         dispatcher*         collision_chain;00168     };00169 00170   <span class="keyword">protected</span>:00171     socket_t*   sock;00172     <span class="keywordtype">bool</span>        canceled;00173     <span class="keywordtype">char</span>*       address;00174     <a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db;00175     <span class="keyword">enum</span> { hash_table_size = 113  };00176     dispatcher* hash_table[hash_table_size];00177 00178     <span class="keywordtype">bool</span> dispatch(WWWconnection&amp; con, <span class="keywordtype">char</span>* page);00179 00180   <span class="keyword">public</span>:00181     WWWapi(<a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db, <span class="keywordtype">int</span> n_handlers, dispatcher* dispatch_table);00182 00183     <span class="comment">//</span>00184     <span class="comment">// Bind and listen socket</span>00185     <span class="comment">//</span>00186     <span class="keywordtype">bool</span> open(<span class="keywordtype">char</span> <span class="keyword">const</span>* socket_address = <span class="stringliteral">"localhost:80"</span>, 00187               socket_t::socket_domain domain = socket_t::sock_global_domain, 00188               <span class="keywordtype">int</span> listen_queue = DEFAULT_LISTEN_QUEUE_SIZE);00189 00190 00191     <span class="comment">//</span>00192     <span class="comment">// Read and execute requests</span>00193     <span class="comment">//</span>00194     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> serve(WWWconnection&amp; con) = 0;00195 00196     <span class="comment">//</span>00197     <span class="comment">// Accept new connection by the socket</span>00198     <span class="comment">//</span>00199     <span class="keywordtype">bool</span> connect(WWWconnection&amp; con);00200 00201     <span class="comment">//</span>00202     <span class="comment">// Cancel acception of connections</span>00203     <span class="comment">// </span>00204     <span class="keywordtype">void</span> cancel();00205 00206     <span class="comment">//</span>00207     <span class="comment">// Close socket</span>00208     <span class="comment">// </span>00209     <span class="keywordtype">void</span> close();00210 };00211 00212 00213 <span class="comment">//</span>00214 <span class="comment">// Interaction with WWW server by means of CGI protocol and CGIatub program</span>00215 <span class="comment">//</span>00216 <span class="keyword">class </span>FASTDB_DLL_ENTRY CGIapi : <span class="keyword">public</span> WWWapi { 00217   <span class="keyword">public</span>:00218     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> serve(WWWconnection&amp; con);00219 00220     CGIapi(<a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db, <span class="keywordtype">int</span> n_handlers, dispatcher* dispatch_table) 00221     : WWWapi(db, n_handlers, dispatch_table) {}00222 };00223 00224     00225 <span class="comment">// </span>00226 <span class="comment">// Built-in implementation of sunset of subset of HTTP protocol</span>00227 <span class="comment">//</span>00228 <span class="keyword">class </span>FASTDB_DLL_ENTRY HTTPapi : <span class="keyword">public</span> WWWapi { 00229   <span class="keyword">protected</span>:00230     time_t connectionHoldTimeout;00231     <span class="keywordtype">bool</span>   keepConnectionAlive;00232 00233     <span class="keywordtype">bool</span> handleRequest(WWWconnection&amp; con, <span class="keywordtype">char</span>* begin, <span class="keywordtype">char</span>* end, 00234                        <span class="keywordtype">char</span>* host, <span class="keywordtype">bool</span>&amp; result);00235 00236   <span class="keyword">public</span>:00237     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> serve(WWWconnection&amp; con);00238 00239     HTTPapi(<a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db, <span class="keywordtype">int</span> n_handlers, dispatcher* dispatch_table, 00240             <span class="keywordtype">bool</span> persistentConnections = <span class="keyword">false</span>,00241             time_t connectionHoldTimeoutSec = WAIT_FOREVER) 00242     : WWWapi(db, n_handlers, dispatch_table) 00243     {00244         keepConnectionAlive = persistentConnections;00245         connectionHoldTimeout = connectionHoldTimeoutSec;00246     }00247 };00248 00249 <span class="keyword">class </span>FASTDB_DLL_ENTRY QueueManager { 00250     WWWconnection*   connectionPool;00251     WWWconnection*   freeList;00252     WWWconnection*   waitList;00253     dbMutex          mutex;00254     dbLocalSemaphore go;00255     dbLocalEvent     done;00256     dbThread*        threads;00257     <span class="keywordtype">int</span>              nThreads;00258     WWWapi*          server;00259     <a class="code" href="classdbDatabase.html">dbDatabase</a>&amp;      db;00260 00261     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc handleThread(<span class="keywordtype">void</span>* arg);00262     <span class="keywordtype">void</span> handle();00263     00264   <span class="keyword">public</span>:00265     <span class="keywordtype">void</span> stop();00266     <span class="keywordtype">void</span> start();00267 00268     QueueManager(WWWapi&amp; api, <span class="comment">// WWWapi should be opened</span>00269                  <a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db,00270                  <span class="keywordtype">int</span>     nThreads = 8, 00271                  <span class="keywordtype">int</span>     connectionQueueLen = 64);00272     ~QueueManager();00273 };00274 00275 00276 <span class="preprocessor">#endif</span>00277 <span class="preprocessor"></span>00278 00279 </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 + -