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

📄 localcli_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00182         T* next = NULL;
00183         <span class="keywordflow">for</span> (i = 0; i &lt; descriptor_table_size; i++) {
00184             table[i] = next = <span class="keyword">new</span> T(i, next);
00185         }
00186         this-&gt;free_chain = next;
00187     }
00188 
00189     ~descriptor_table() { 
00190         <span class="keyword">delete</span>[] table;
00191     }
00192 
00193     T* get(<span class="keywordtype">int</span> desc) {
00194         dbCriticalSection cs(this-&gt;mutex);
00195         <span class="keywordflow">return</span> (desc &gt;= descriptor_table_size) ? (T*)0 : table[desc];
00196     }
00197 
00198     T* allocate() {
00199         dbCriticalSection cs(this-&gt;mutex);
00200         <span class="keywordflow">if</span> (this-&gt;free_chain == NULL) {
00201             <span class="keywordtype">int</span> i, n;
00202             T** desc = <span class="keyword">new</span> T*[descriptor_table_size * 2];
00203             memcpy(desc, table, descriptor_table_size*<span class="keyword">sizeof</span>(T*));
00204             <span class="keyword">delete</span>[] table;
00205             table = desc;
00206             T* next = NULL;
00207             <span class="keywordflow">for</span> (i = descriptor_table_size, n = i*2; i &lt; n; i++) {
00208                 table[i] = next = <span class="keyword">new</span> T(i, next);
00209             }
00210             this-&gt;free_chain = next;
00211             descriptor_table_size = n;
00212         }
00213         T* desc = this-&gt;free_chain;
00214         this-&gt;free_chain = desc-&gt;next;
00215         <span class="keywordflow">return</span> desc;
00216     }
00217 };
00218 
00219 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbCLI { 
00220   <span class="keyword">private</span>:
00221     fixed_size_object_allocator&lt;column_binding&gt; column_allocator;
00222     fixed_size_object_allocator&lt;parameter_binding&gt; parameter_allocator;
00223     
00224     descriptor_table&lt;session_desc&gt;   sessions;
00225     descriptor_table&lt;statement_desc&gt; statements;
00226 
00227     session_desc* active_session_list;
00228     
00229     dbMutex sessionMutex;    
00230     
00231     <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);
00232     <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, 
00233                                                       oid_t                 oid, 
00234                                                       <a class="code" href="classdbTable.html">dbTable</a>*              table, 
00235                                                       <span class="keywordtype">char</span> <span class="keyword">const</span>*           tableName, 
00236                                                       <span class="keywordtype">int</span>                   nFields, 
00237                                                       <span class="keywordtype">int</span>                   nColumns, 
00238                                                       cli_field_descriptor* columns);
00239     
00240   <span class="keyword">public</span>:
00241     <span class="keyword">static</span> dbCLI instance;
00242 
00243     dbCLI() { 
00244         active_session_list = NULL; 
00245     }
00246 
00247     <span class="keywordtype">int</span> create_session(<span class="keywordtype">char</span> <span class="keyword">const</span>* databasePath,
00248                        <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath,
00249                        <span class="keywordtype">unsigned</span>    transactionCommitDelay, 
00250                        <span class="keywordtype">int</span>         openAttr, 
00251                        size_t      initDatabaseSize,
00252                        size_t      extensionQuantum,
00253                        size_t      initIndexSize,
00254                        size_t      fileSizeLimit);   
00255 
00256 
00257     <span class="keywordtype">int</span> create_replication_node(<span class="keywordtype">int</span>         nodeId,
00258                                 <span class="keywordtype">int</span>         nServers,
00259                                 <span class="keywordtype">char</span>*       nodeNames[],
00260                                 <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName, 
00261                                 <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath, 
00262                                 <span class="keywordtype">int</span>         openAttr, 
00263                                 size_t      initDatabaseSize,
00264                                 size_t      extensionQuantum,
00265                                 size_t      initIndexSize,
00266                                 size_t      fileSizeLimit);
00267 
00268     <span class="keywordtype">int</span> create_statement(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* sql);
00269 
00270     <span class="keywordtype">int</span> bind_parameter(<span class="keywordtype">int</span>         statement,
00271                        <span class="keywordtype">char</span> <span class="keyword">const</span>* param_name,
00272                        <span class="keywordtype">int</span>         var_type,
00273                        <span class="keywordtype">void</span>*       var_ptr);
00274 
00275     <span class="keywordtype">int</span> bind_column(<span class="keywordtype">int</span>         statement,
00276                     <span class="keywordtype">char</span> <span class="keyword">const</span>* column_name,
00277                     <span class="keywordtype">int</span>         var_type,
00278                     <span class="keywordtype">int</span>*        var_len,
00279                     <span class="keywordtype">void</span>*       var_ptr);
00280 
00281     <span class="keywordtype">int</span> bind_array_column(<span class="keywordtype">int</span>               statement,
00282                           <span class="keywordtype">char</span> <span class="keyword">const</span>*       column_name,
00283                           <span class="keywordtype">int</span>               var_type,
00284                           <span class="keywordtype">void</span>*             var_ptr,
00285                           cli_column_set_ex set,
00286                           cli_column_get_ex get,
00287                           <span class="keywordtype">void</span>*             user_data);
00288         
00289     <span class="keywordtype">int</span> fetch(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> for_update);
00290 
00291     <span class="keywordtype">int</span> fetch_columns(statement_desc* stmt);
00292     <span class="keywordtype">int</span> store_columns(<span class="keywordtype">char</span>* buf, statement_desc* stmt, <span class="keywordtype">bool</span> insert);
00293 
00294     <span class="keywordtype">int</span> insert(<span class="keywordtype">int</span> statement, cli_oid_t* oid);
00295     <span class="keywordtype">int</span> update(<span class="keywordtype">int</span> statement);
00296 
00297     <span class="keywordtype">int</span> close_cursor(<span class="keywordtype">int</span> statement);
00298 
00299     <span class="keywordtype">int</span> freeze(<span class="keywordtype">int</span> statement);
00300     <span class="keywordtype">int</span> unfreeze(<span class="keywordtype">int</span> statement);
00301 
00302     <span class="keywordtype">int</span> get_first(<span class="keywordtype">int</span> statement);
00303     <span class="keywordtype">int</span> get_last(<span class="keywordtype">int</span> statement);
00304     <span class="keywordtype">int</span> get_next(<span class="keywordtype">int</span> statement);
00305     <span class="keywordtype">int</span> get_prev(<span class="keywordtype">int</span> statement);
00306     <span class="keywordtype">int</span> skip(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> n);
00307     <span class="keywordtype">int</span> seek(<span class="keywordtype">int</span> statement, cli_oid_t oid);
00308 
00309     cli_oid_t get_current_oid(<span class="keywordtype">int</span> statement);
00310     <span class="keywordtype">int</span> free_statement(<span class="keywordtype">int</span> statement);
00311     <span class="keywordtype">int</span> free_statement(statement_desc* stmt);
00312     <span class="keywordtype">int</span> release_statement(statement_desc* stmt);
00313     
00314     <span class="keywordtype">int</span> commit(<span class="keywordtype">int</span> session);
00315     <span class="keywordtype">int</span> precommit(<span class="keywordtype">int</span> session);
00316     <span class="keywordtype">int</span> abort(<span class="keywordtype">int</span> session);
00317 
00318     <span class="keywordtype">int</span> remove(<span class="keywordtype">int</span> statement);
00319     <span class="keywordtype">int</span> remove_current(<span class="keywordtype">int</span> statement);
00320 
00321     <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);
00322     <span class="keywordtype">int</span> describe_layout(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* table, cli_field_layout** fields, <span class="keywordtype">int</span>* rec_size);
00323     <span class="keywordtype">int</span> show_tables(<span class="keywordtype">int</span> session, cli_table_descriptor** tables);
00324 
00325     <span class="keywordtype">int</span> match_columns(<span class="keywordtype">char</span> <span class="keyword">const</span>* table_name, statement_desc* stmt);
00326 
00327     <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, 
00328                      cli_field_descriptor* columns);
00329     <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, 
00330                     cli_field_descriptor* columns);
00331 
00332     <span class="keywordtype">int</span> drop_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName);
00333 
00334     <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);
00335 
00336     cli_error_handler set_error_handler(<span class="keywordtype">int</span> session, cli_error_handler new_handler, <span class="keywordtype">void</span>* context);
00337 
00338     <span class="keywordtype">int</span> attach(<span class="keywordtype">int</span> session);
00339     <span class="keywordtype">int</span> detach(<span class="keywordtype">int</span> session, <span class="keywordtype">int</span> detach_mode);
00340 
00341     <span class="keywordtype">int</span> get_database_state(<span class="keywordtype">int</span> session, cli_database_monitor* monitor);
00342 
00343     <span class="keywordtype">int</span> close(<span class="keywordtype">int</span> session);
00344 
00345     <span class="keywordtype">int</span> prepare_query(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* query);
00346     <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);
00347     <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, <span class="keywordtype">int</span> n_params, <span class="keywordtype">int</span>* param_types, <span class="keywordtype">void</span>** param_values);
00348     <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);
00349 
00350     <span class="keywordtype">int</span> join_transaction(<span class="keywordtype">int</span> session, cli_transaction_context_t ctx);
00351 
00352     <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, 
00353                             cli_field_descriptor* columns);
00354 
00355     <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, 
00356                             cli_field_descriptor* columns);
00357 
00358     <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);
00359 };
00360 
00361 END_FASTDB_NAMESPACE
00362 
00363 <span class="preprocessor">#endif</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 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 + -