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

📄 localcli_8h-source.html

📁 FastDb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00167         free_chain = next;00168     }00169 00170     ~descriptor_table() { 00171         <span class="keyword">delete</span>[] table;00172     }00173 00174     T* get(<span class="keywordtype">int</span> desc) {00175         dbCriticalSection cs(mutex);00176         <span class="keywordflow">return</span> (desc &gt;= descriptor_table_size) ? (T*)0 : table[desc];00177     }00178 00179     T* allocate() {00180         dbCriticalSection cs(mutex);00181         <span class="keywordflow">if</span> (free_chain == NULL) {00182             <span class="keywordtype">int</span> i, n;00183             T** desc = <span class="keyword">new</span> T*[descriptor_table_size * 2];00184             memcpy(desc, table, descriptor_table_size*<span class="keyword">sizeof</span>(T*));00185             <span class="keyword">delete</span>[] table;00186             table = desc;00187             T* next = NULL;00188             <span class="keywordflow">for</span> (i = descriptor_table_size, n = i*2; i &lt; n; i++) {00189                 table[i] = next = <span class="keyword">new</span> T(i, next);00190             }00191             free_chain = next;00192             descriptor_table_size = n;00193         }00194         T* desc = free_chain;00195         free_chain = desc-&gt;next;00196         <span class="keywordflow">return</span> desc;00197     }00198 };00199 00200 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbCLI { 00201   <span class="keyword">private</span>:00202     fixed_size_object_allocator&lt;column_binding&gt; column_allocator;00203     fixed_size_object_allocator&lt;parameter_binding&gt; parameter_allocator;00204     00205     descriptor_table&lt;session_desc&gt;   sessions;00206     descriptor_table&lt;statement_desc&gt; statements;00207 00208     session_desc* active_session_list;00209     00210     dbMutex sessionMutex;    00211     00212     <span class="keyword">static</span> <span class="keywordtype">int</span> calculate_varying_length(<span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span>&amp; nFields, cli_field_descriptor* columns);00213     <span class="keyword">static</span> <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* create_table_descriptor(<a class="code" href="classdbDatabase.html">dbDatabase</a>*           db, 00214                                                       oid_t                 oid, 00215                                                       <a class="code" href="classdbTable.html">dbTable</a>*              table, 00216                                                       <span class="keywordtype">char</span> <span class="keyword">const</span>*           tableName, 00217                                                       <span class="keywordtype">int</span>                   nFields, 00218                                                       <span class="keywordtype">int</span>                   nColumns, 00219                                                       cli_field_descriptor* columns);00220     00221   <span class="keyword">public</span>:00222     <span class="keyword">static</span> dbCLI instance;00223 00224     dbCLI() { 00225         active_session_list = NULL; 00226     }00227 00228     <span class="keywordtype">int</span> create_session(<span class="keywordtype">char</span> <span class="keyword">const</span>* databasePath,00229                        <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath,00230                        <span class="keywordtype">unsigned</span>    transactionCommitDelay, 00231                        <span class="keywordtype">int</span>         openAttr, 00232                        size_t      initDatabaseSize,00233                        size_t      extensionQuantum,00234                        size_t      initIndexSize,00235                        size_t      fileSizeLimit);   00236 00237 00238     <span class="keywordtype">int</span> create_replication_node(<span class="keywordtype">int</span>         nodeId,00239                                 <span class="keywordtype">int</span>         nServers,00240                                 <span class="keywordtype">char</span>*       nodeNames[],00241                                 <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName, 00242                                 <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath, 00243                                 <span class="keywordtype">int</span>         openAttr, 00244                                 size_t      initDatabaseSize,00245                                 size_t      extensionQuantum,00246                                 size_t      initIndexSize,00247                                 size_t      fileSizeLimit);00248 00249     <span class="keywordtype">int</span> create_statement(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* sql);00250 00251     <span class="keywordtype">int</span> bind_parameter(<span class="keywordtype">int</span>         statement,00252                        <span class="keywordtype">char</span> <span class="keyword">const</span>* param_name,00253                        <span class="keywordtype">int</span>         var_type,00254                        <span class="keywordtype">void</span>*       var_ptr);00255 00256     <span class="keywordtype">int</span> bind_column(<span class="keywordtype">int</span>         statement,00257                     <span class="keywordtype">char</span> <span class="keyword">const</span>* column_name,00258                     <span class="keywordtype">int</span>         var_type,00259                     <span class="keywordtype">int</span>*        var_len,00260                     <span class="keywordtype">void</span>*       var_ptr);00261 00262     <span class="keywordtype">int</span> bind_array_column(<span class="keywordtype">int</span>               statement,00263                           <span class="keywordtype">char</span> <span class="keyword">const</span>*       column_name,00264                           <span class="keywordtype">int</span>               var_type,00265                           <span class="keywordtype">void</span>*             var_ptr,00266                           cli_column_set_ex set,00267                           cli_column_get_ex get);00268         00269     <span class="keywordtype">int</span> fetch(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> for_update);00270 00271     <span class="keywordtype">int</span> fetch_columns(statement_desc* stmt);00272     <span class="keywordtype">int</span> store_columns(<span class="keywordtype">char</span>* buf, statement_desc* stmt);00273 00274     <span class="keywordtype">int</span> insert(<span class="keywordtype">int</span> statement, cli_oid_t* oid);00275     <span class="keywordtype">int</span> update(<span class="keywordtype">int</span> statement);00276 00277     <span class="keywordtype">int</span> freeze(<span class="keywordtype">int</span> statement);00278     <span class="keywordtype">int</span> unfreeze(<span class="keywordtype">int</span> statement);00279 00280     <span class="keywordtype">int</span> get_first(<span class="keywordtype">int</span> statement);00281     <span class="keywordtype">int</span> get_last(<span class="keywordtype">int</span> statement);00282     <span class="keywordtype">int</span> get_next(<span class="keywordtype">int</span> statement);00283     <span class="keywordtype">int</span> get_prev(<span class="keywordtype">int</span> statement);00284     <span class="keywordtype">int</span> skip(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> n);00285     <span class="keywordtype">int</span> seek(<span class="keywordtype">int</span> statement, cli_oid_t oid);00286 00287     cli_oid_t get_current_oid(<span class="keywordtype">int</span> statement);00288     <span class="keywordtype">int</span> free_statement(<span class="keywordtype">int</span> statement);00289     <span class="keywordtype">int</span> free_statement(statement_desc* stmt);00290     00291     <span class="keywordtype">int</span> commit(<span class="keywordtype">int</span> session);00292     <span class="keywordtype">int</span> precommit(<span class="keywordtype">int</span> session);00293     <span class="keywordtype">int</span> abort(<span class="keywordtype">int</span> session);00294 00295     <span class="keywordtype">int</span> remove(<span class="keywordtype">int</span> statement);00296 00297     <span class="keywordtype">int</span> describe(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* table, cli_field_descriptor** fields);00298     <span class="keywordtype">int</span> show_tables(<span class="keywordtype">int</span> session, cli_table_descriptor** tables);00299 00300     <span class="keywordtype">int</span> match_columns(<span class="keywordtype">char</span> <span class="keyword">const</span>* table_name, statement_desc* stmt);00301 00302     <span class="keywordtype">int</span> create_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span> nColumns, 00303                      cli_field_descriptor* columns);00304     <span class="keywordtype">int</span> alter_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span> nColumns, 00305                     cli_field_descriptor* columns);00306 00307     <span class="keywordtype">int</span> drop_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName);00308 00309     <span class="keywordtype">int</span> alter_index(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">char</span> <span class="keyword">const</span>* fieldName, <span class="keywordtype">int</span> newFlags);00310 00311     cli_error_handler set_error_handler(<span class="keywordtype">int</span> session, cli_error_handler new_handler);00312 00313     <span class="keywordtype">int</span> attach(<span class="keywordtype">int</span> session);00314     <span class="keywordtype">int</span> detach(<span class="keywordtype">int</span> session, <span class="keywordtype">int</span> detach_mode);00315 00316     <span class="keywordtype">int</span> get_database_state(<span class="keywordtype">int</span> session, cli_database_monitor* monitor);00317 00318     <span class="keywordtype">int</span> close(<span class="keywordtype">int</span> session);00319 00320     <span class="keywordtype">int</span> prepare_query(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* query);00321     <span class="keywordtype">int</span> execute_query(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> for_update, <span class="keywordtype">void</span>* record_struct, va_list params);00322     <span class="keywordtype">int</span> insert_struct(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* table_name, <span class="keywordtype">void</span>* record_struct, cli_oid_t* oid);00323 00324     <span class="keyword">static</span> <span class="keywordtype">int</span> create_table(<a class="code" href="classdbDatabase.html">dbDatabase</a>* db, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span> nColumns, 00325                             cli_field_descriptor* columns);00326 00327     <span class="keyword">static</span> <span class="keywordtype">int</span> alter_table(<a class="code" href="classdbDatabase.html">dbDatabase</a>* db, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span> nColumns, 00328                             cli_field_descriptor* columns);00329 00330     <span class="keyword">static</span> <span class="keywordtype">int</span> alter_index(<a class="code" href="classdbDatabase.html">dbDatabase</a>* db, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">char</span> <span class="keyword">const</span>* fieldName, <span class="keywordtype">int</span> newFlags);00331 };</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 + -