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