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

📄 wwwapi_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 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_NAMESPACE
00280 
00281 <span class="preprocessor">#endif</span>
00282 <span class="preprocessor"></span>
00283 
00284 
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:31 2008 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 + -