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

📄 database_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00224     <span class="keywordtype">int</span>  nConcurrentWriters;
00225     <span class="keywordtype">int</span>  nWaitReaders;
00226     <span class="keywordtype">int</span>  nWaitWriters;
00227     <span class="keywordtype">int</span>  waitForUpgrade;
00228     <span class="keywordtype">int</span>  forceCommitCount;
00229     <span class="keywordtype">int</span>  backupInProgress;
00230     <span class="keywordtype">int</span>  uncommittedChanges;
00231 
00232     <span class="keywordtype">int</span>  curr;             <span class="comment">// copy of header-&gt;root, used to allow read access </span>
00233                            <span class="comment">// to the database during transaction commit</span>
00234     offs_t size; <span class="comment">// database size</span>
00235 
00236     <span class="keywordtype">int</span>  commitInProgress;
00237     <span class="keywordtype">int</span>  concurrentTransId;
00238 
00239     <span class="keywordtype">unsigned</span> lastDeadlockRecoveryTime;
00240 
00241     <span class="keywordtype">int</span>  version; 
00242     <span class="keywordtype">int</span>  users;  
00243 
00244     dbProcessId ownerPid;
00245 
00246     dbDatabaseThreadContext*  delayedCommitContext;     <span class="comment">// save context of delayed transaction</span>
00247 
00248     int4 dirtyPagesMap[dbDirtyPageBitmapSize/4];
00249 
00250     <span class="keywordtype">int</span>  sharedLockOwner[dbMaxReaders];
00251     <span class="keywordtype">int</span>  exclusiveLockOwner;
00252     <span class="keywordtype">int</span>  clientId;
00253     <span class="keywordtype">int</span>  upgradeId;
00254 
00255     <span class="keywordtype">int</span>  modified;
00256 
00257 <span class="preprocessor">#ifdef DO_NOT_REUSE_OID_WITHIN_SESSION</span>
00258 <span class="preprocessor"></span>    <span class="keyword">struct </span>{ 
00259         oid_t head;
00260         oid_t tail;
00261     } sessionFreeList[2];
00262 <span class="preprocessor">#endif</span>
00263 <span class="preprocessor"></span>};
00264 
<a name="l00268"></a><a class="code" href="classdbL2List.html">00268</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY <a class="code" href="classdbL2List.html">dbL2List</a> { 
00269   <span class="keyword">public</span>:
00270     <a class="code" href="classdbL2List.html">dbL2List</a>* next; 
00271     <a class="code" href="classdbL2List.html">dbL2List</a>* prev; 
00272 
00273     <span class="keywordtype">void</span> link(<a class="code" href="classdbL2List.html">dbL2List</a>* elem) { 
00274         elem-&gt;<a class="code" href="classdbL2List.html#dbL2Listm1">prev</a> = <span class="keyword">this</span>;
00275         elem-&gt;<a class="code" href="classdbL2List.html#dbL2Listm0">next</a> = next;
00276         next = next-&gt;<a class="code" href="classdbL2List.html#dbL2Listm1">prev</a> = elem;
00277     }
00278     <span class="keywordtype">void</span> unlink() { 
00279         next-&gt;<a class="code" href="classdbL2List.html#dbL2Listm1">prev</a> = prev;
00280         prev-&gt;<a class="code" href="classdbL2List.html#dbL2Listm0">next</a> = next;
00281         next = prev = <span class="keyword">this</span>;
00282     }
00283     <span class="keywordtype">bool</span> isEmpty() { 
00284         <span class="keywordflow">return</span> next == <span class="keyword">this</span>;
00285     }
00286     <span class="keywordtype">void</span> reset() { 
00287         next = prev = <span class="keyword">this</span>;
00288     }        
00289     <a class="code" href="classdbL2List.html">dbL2List</a>() { 
00290         next = prev = <span class="keyword">this</span>;
00291     }
00292     ~<a class="code" href="classdbL2List.html">dbL2List</a>() { 
00293         unlink();
00294     }
00295 };
00296 
00297 <span class="keyword">class </span>dbVisitedObject {
00298   <span class="keyword">public</span>: 
00299     dbVisitedObject* next;
00300     oid_t            oid;
00301 
00302     dbVisitedObject(oid_t oid, dbVisitedObject* chain) {         
00303         this-&gt;oid = oid;
00304         next = chain;
00305     }
00306 };
00307     
00308 <span class="preprocessor">#ifdef AUTO_DETECT_PROCESS_CRASH</span>
00309 <span class="preprocessor"></span><span class="keyword">struct </span>dbWatchDogContext : <a class="code" href="classdbL2List.html">dbL2List</a> { 
00310     dbThread    thread;
00311     dbWatchDog  watchDog;
00312     <span class="keywordtype">int</span>         clientId;
00313     <a class="code" href="classdbDatabase.html">dbDatabase</a>* db;
00314     dbMutex*    mutex;
00315 };
00316 <span class="preprocessor">#endif</span>
00317 <span class="preprocessor"></span>
00318 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; 
00319 <span class="keyword">class </span>dbHArray;
00320 
00321 <span class="keyword">class </span>dbXmlContext;
00322 <span class="keyword">class </span>dbXmlScanner;
00323 
00324 <span class="keyword">typedef</span> unsigned (*dbHashFunction)(byte* key, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> keylen);
00325     
<a name="l00329"></a><a class="code" href="classdbDatabase.html">00329</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbDatabase { 
00330     <span class="keyword">friend</span> <span class="keyword">class </span>dbSelection;
00331     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>;
00332     <span class="keyword">friend</span> <span class="keyword">class </span>dbHashTable;
00333     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQuery.html">dbQuery</a>;
00334     <span class="keyword">friend</span> <span class="keyword">class </span>dbTtree;
00335     <span class="keyword">friend</span> <span class="keyword">class </span>dbTtreeNode;
00336     <span class="keyword">friend</span> <span class="keyword">class </span>dbRtree;
00337     <span class="keyword">friend</span> <span class="keyword">class </span>dbRtreePage;
00338     <span class="keyword">friend</span> <span class="keyword">class </span>dbParallelQueryContext; 
00339     <span class="keyword">friend</span> <span class="keyword">class </span>dbServer;
00340     <span class="keyword">friend</span> <span class="keyword">class </span>dbColumnBinding;
00341     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbUserFunctionArgument.html">dbUserFunctionArgument</a>;
00342     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbAnyContainer.html">dbAnyContainer</a>;
00343     <span class="keyword">friend</span> <span class="keyword">class </span>dbFile;
00344     <span class="keyword">friend</span> <span class="keyword">class </span>dbCLI;
00345     <span class="keyword">friend</span> <span class="keyword">class </span>GiSTdb;
00346 
00347 <span class="preprocessor">#ifdef HAS_TEMPLATE_FRIENDS</span>
00348 <span class="preprocessor"></span>    <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; 
00349     <span class="keyword">friend</span> <span class="keyword">class </span>dbHArray;
00350 <span class="preprocessor">#else</span>
00351 <span class="preprocessor"></span>    <span class="keyword">friend</span> <span class="keyword">class </span>dbAnyHArray;
00352 <span class="preprocessor">#endif</span>
00353 <span class="preprocessor"></span>
00354   <span class="keyword">public</span>:
00364     <span class="keywordtype">bool</span> open(<span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName, 
00365               <span class="keywordtype">char</span> <span class="keyword">const</span>* fileName = NULL, 
00366               time_t waitLockTimeoutMsec = INFINITE, 
00367               time_t commitDelaySec = 0);
00368 
00369     <span class="keyword">enum</span> dbAccessType { 
00370         dbReadOnly,
00371         dbAllAccess,
00372         dbConcurrentRead,
00373         dbConcurrentUpdate
00374     };
00375 
<a name="l00379"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html">00379</a>     <span class="keyword">struct </span><a class="code" href="structdbDatabase_1_1OpenParameters.html">OpenParameters</a> { 
<a name="l00383"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm0">00383</a>         <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName;
00384 
<a name="l00388"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm1">00388</a>         <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseFilePath;
00389         
<a name="l00393"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm2">00393</a>         time_t  transactionCommitDelay;
00394 
<a name="l00398"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm3">00398</a>         time_t waitLockTimeoutMsec;
00399 
<a name="l00403"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm4">00403</a>         dbAccessType accessType;
00404 
<a name="l00408"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm5">00408</a>         size_t initSize;
00409 
<a name="l00413"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm6">00413</a>         size_t extensionQuantum;
00414             
<a name="l00418"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm7">00418</a>         size_t initIndexSize;
00419 
<a name="l00423"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm8">00423</a>         <span class="keywordtype">int</span> nThreads;
00424 
<a name="l00429"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm9">00429</a>         offs_t freeSpaceReuseThreshold;
00430 
<a name="l00434"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm10">00434</a>         <span class="keywordtype">int</span> parallelScanThreshold;
00435 
<a name="l00439"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm11">00439</a>         <span class="keywordtype">int</span> nodeId;
00440 
<a name="l00444"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm12">00444</a>         <span class="keywordtype">char</span>** nodeAddresses;
00445 
<a name="l00449"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm13">00449</a>         <span class="keywordtype">int</span> nNodes;
00450         
<a name="l00454"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm14">00454</a>         <span class="keywordtype">int</span> pollInterval; <span class="comment">// milliseconds</span>
00455 
<a name="l00459"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm15">00459</a>         <span class="keywordtype">int</span> waitReadyTimeout; <span class="comment">// milliseconds</span>
00460 
<a name="l00464"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm16">00464</a>         <span class="keywordtype">int</span> waitStatusTimeout; <span class="comment">// milliseconds </span>
00465 
<a name="l00469"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm17">00469</a>         <span class="keywordtype">int</span> recoveryConnectionAttempts; 
00470 
<a name="l00474"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm18">00474</a>         <span class="keywordtype">int</span> startupConnectionAttempts;
00475 
<a name="l00481"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm19">00481</a>         <span class="keywordtype">int</span> replicationWriteTimeout;
00482 
<a name="l00488"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm20">00488</a>         <span class="keywordtype">int</span> maxAsyncRecoveryIterations;
00489 
00490         <a class="code" href="structdbDatabase_1_1OpenParameters.html">OpenParameters</a>() { 
00491             databaseName = NULL;
00492             databaseFilePath = NULL;
00493             transactionCommitDelay = 0;
00494             waitLockTimeoutMsec = INFINITE;
00495             accessType = dbAllAccess;
00496             extensionQuantum = dbDefaultExtensionQuantum;
00497             initSize = dbDefaultInitDatabaseSize;
00498             initIndexSize = dbDefaultInitIndexSize;
00499             nThreads = 1;
00500             freeSpaceReuseThreshold = dbDefaultExtensionQuantum;
00501             nodeId = 0;
00502             nodeAddresses = NULL;
00503             nNodes = 0;
00504             parallelScanThreshold = dbDefaultParallelScanThreshold;
00505             pollInterval = dbDefaultPollInterval;
00506             waitReadyTimeout = dbWaitReadyTimeout;
00507             waitStatusTimeout = dbWaitStatusTimeout;
00508             recoveryConnectionAttempts = dbRecoveryConnectionAttempts; 
00509             startupConnectionAttempts = dbStartupConnectionAttempts;
00510             replicationWriteTimeout = dbReplicationWriteTimeout;
00511             maxAsyncRecoveryIterations = dbMaxAsyncRecoveryIterations;   
00512         }
00513     };
00514 
00520     <span class="keywordtype">bool</span> open(OpenParameters&amp; params);
00521 
00525     <span class="keywordtype">void</span> close();
00526 
00530     <span class="keywordtype">void</span> commit();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -