📄 database_8h-source.html
字号:
01089 <span class="keyword">static</span> <span class="keywordtype">void</span> deleteCompiledQuery(dbExprNode* tree); 01090 <a name="l01097"></a><a class="code" href="classdbDatabase.html#dbSubSqlt3">01097</a> <span class="keyword">enum</span> dbLockType { 01098 dbSharedLock, 01099 dbExclusiveLock,01100 dbCommitLock01101 };01102 01103 <span class="keywordtype">bool</span> beginTransaction(dbLockType);01104 <a name="l01108"></a><a class="code" href="classdbDatabase.html#dbSubSqlb37">01108</a> <span class="keywordtype">void</span> endTransaction() { 01109 endTransaction(threadContext.get());01110 }01111 01116 <span class="keywordtype">void</span> endTransaction(dbDatabaseThreadContext* ctx);01117 01122 <span class="keywordtype">void</span> initializeMetaTable();01123 01131 <span class="keywordtype">bool</span> loadScheme(<span class="keywordtype">bool</span> alter);01132 01138 <span class="keywordtype">bool</span> completeDescriptorsInitialization();01139 01145 <span class="keywordtype">void</span> reformatTable(oid_t tableId, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01146 01154 <span class="keywordtype">bool</span> addIndices(<span class="keywordtype">bool</span> alter, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01155 01161 oid_t addNewTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01162 01168 <span class="keywordtype">void</span> updateTableDescriptor(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t tableId);01169 01178 <span class="keywordtype">void</span> insertInverseReference(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, 01179 oid_t reverseId, oid_t targetId);01180 01186 <span class="keywordtype">void</span> removeInverseReferences(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t oid);01187 01196 <span class="keywordtype">void</span> removeInverseReference(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, 01197 oid_t reverseId, oid_t targetId);01198 01203 <span class="keywordtype">void</span> deleteTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01204 01209 <span class="keywordtype">void</span> dropTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01210 01215 <span class="keywordtype">void</span> createIndex(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01216 01221 <span class="keywordtype">void</span> createHashTable(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01222 01227 <span class="keywordtype">void</span> dropIndex(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01228 01233 <span class="keywordtype">void</span> dropHashTable(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01234 01240 <span class="keywordtype">void</span> linkTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, oid_t tableId);01241 01246 <span class="keywordtype">void</span> unlinkTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table);01247 01254 <span class="keywordtype">bool</span> wasReserved(offs_t pos, size_t size);01255 01264 <span class="keywordtype">void</span> reserveLocation(dbLocation& location, offs_t pos, size_t size);01265 01270 <span class="keywordtype">void</span> commitLocation();01271 01277 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* findTable(<span class="keywordtype">char</span> <span class="keyword">const</span>* name);01278 01285 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* findTableByName(<span class="keywordtype">char</span> <span class="keyword">const</span>* name);01286 <a name="l01291"></a><a class="code" href="classdbDatabase.html#dbSubSqlb62">01291</a> <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* getTables() { 01292 <span class="keywordflow">return</span> tables;01293 }01294 01298 <span class="keywordtype">void</span> setDirty();01299 };01300 01301 01302 <span class="preprocessor">#ifdef REPLICATION_SUPPORT</span>01303 <span class="preprocessor"></span>01304 <span class="preprocessor">#include "sockio.h"</span>01305 01306 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbConnection { 01307 <span class="keyword">public</span>:01308 socket_t* reqSock;01309 socket_t* respSock;01310 dbLocalEvent statusEvent;01311 dbLocalEvent readyEvent;01312 dbLocalEvent useEvent;01313 dbMutex writeCS;01314 <span class="keywordtype">int</span> useCount;01315 <span class="keywordtype">int</span> waitUseEventFlag;01316 <span class="keywordtype">int</span> waitStatusEventFlag;01317 <span class="keywordtype">int</span> status;01318 <span class="keywordtype">int</span> updateCounter;01319 01320 dbConnection() { 01321 readyEvent.open();01322 useEvent.open();01323 statusEvent.open();01324 useCount = 0;01325 waitUseEventFlag = 0;01326 waitStatusEventFlag = 0;01327 status = 0;01328 reqSock = respSock = NULL;01329 }01330 ~dbConnection() { 01331 readyEvent.close();01332 useEvent.close();01333 statusEvent.close();01334 <span class="keyword">delete</span> reqSock;01335 <span class="keyword">delete</span> respSock;01336 }01337 }; 01338 01339 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbReplicatedDatabase : <span class="keyword">public</span> dbDatabase {01340 <span class="keyword">friend</span> <span class="keyword">class </span>dbFile;01341 <span class="keyword">protected</span>:01342 <span class="keywordtype">char</span>** serverURL;01343 <span class="keywordtype">int</span> nServers;01344 <span class="keywordtype">int</span> id;01345 dbConnection* con;01346 01347 <span class="keyword">enum</span> NodeStatus { 01348 ST_OFFLINE, <span class="comment">// node is not available </span>01349 ST_ONLINE, <span class="comment">// node is available </span>01350 ST_ACTIVE, <span class="comment">// primary node is running, replicating changes</span>01351 ST_STANDBY, <span class="comment">// standby node receives changes from primary node</span>01352 ST_RECOVERED <span class="comment">// node is recovered after the fault</span>01353 };01354 01355 dbLocalEvent startEvent;01356 dbLocalEvent recoveredEvent;01357 dbMutex startCS;01358 fd_set inputSD;01359 <span class="keywordtype">int</span> nInputSD;01360 01361 <span class="keywordtype">int</span> activeNodeId;01362 dbMutex sockCS;01363 socket_t* acceptSock;01364 dbThread readerThread;01365 01366 <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc startReader(<span class="keywordtype">void</span>* arg);01367 01368 <span class="keywordtype">void</span> reader();01369 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isReplicated();01370 01371 <span class="keyword">public</span>:01372 <span class="keywordtype">void</span> deleteConnection(<span class="keywordtype">int</span> nodeId);01373 <span class="keywordtype">void</span> lockConnection(<span class="keywordtype">int</span> nodeId);01374 <span class="keywordtype">void</span> unlockConnection(<span class="keywordtype">int</span> nodeId);01375 <span class="keywordtype">void</span> changeActiveNode();01376 <span class="keywordtype">void</span> addConnection(<span class="keywordtype">int</span> nodeId, socket_t* s);01377 <span class="keywordtype">bool</span> writeReq(<span class="keywordtype">int</span> nodeId, ReplicationRequest <span class="keyword">const</span>& hdr, 01378 <span class="keywordtype">void</span>* body = NULL, size_t bodySize = 0);01379 <span class="keywordtype">bool</span> writeResp(<span class="keywordtype">int</span> nodeId, ReplicationRequest <span class="keyword">const</span>& hdr);01380 01381 <span class="keywordtype">bool</span> <a class="code" href="classdbDatabase.html#dbSubSqla6">open</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName, <span class="keywordtype">char</span> <span class="keyword">const</span>* fileName,01382 <span class="keywordtype">int</span> id, <span class="keywordtype">char</span>* servers[], <span class="keywordtype">int</span> nServers);01383 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classdbDatabase.html#dbSubSqla7">close</a>();01384 01385 <span class="keywordtype">int</span> getNumberOfOnlineNodes();01386 01387 <span class="keyword">static</span> <span class="keywordtype">int</span> dbPollInterval;01388 <span class="keyword">static</span> <span class="keywordtype">int</span> dbWaitReadyTimeout;01389 <span class="keyword">static</span> <span class="keywordtype">int</span> dbWaitStatusTimeout;01390 <span class="keyword">static</span> <span class="keywordtype">int</span> dbRecoveryConnectionAttempts;01391 <span class="keyword">static</span> <span class="keywordtype">int</span> dbStartupConnectionAttempts;01392 01393 dbReplicatedDatabase(dbAccessType type = dbAllAccess,01394 size_t dbInitSize = dbDefaultInitDatabaseSize,01395 size_t dbExtensionQuantum = dbDefaultExtensionQuantum,01396 size_t dbInitIndexSize = dbDefaultInitIndexSize,01397 <span class="keywordtype">int</span> nThreads = 1)01398 : dbDatabase(type, dbInitSize, dbExtensionQuantum, dbInitIndexSize, nThreads)01399 {}01400 };01401 <span class="preprocessor">#endif</span>01402 <span class="preprocessor"></span>01403 <span class="keyword">template</span><<span class="keyword">class</span> T>01404 <a class="code" href="classdbReference.html">dbReference<T></a> insert(T <span class="keyword">const</span>& record) { 01405 <a class="code" href="classdbReference.html">dbReference<T></a> ref;01406 T::dbDescriptor.getDatabase()->insertRecord(&T::dbDescriptor, &ref, &record);01407 <span class="keywordflow">return</span> ref;01408 }01409 01410 <span class="preprocessor">#ifdef NO_MEMBER_TEMPLATES</span>01411 <span class="preprocessor"></span><span class="keyword">template</span><<span class="keyword">class</span> T>01412 <a class="code" href="classdbReference.html">dbReference<T></a> insert(dbDatabase& db, T <span class="keyword">const</span>& record) {01413 <a class="code" href="classdbReference.html">dbReference<T></a> ref;01414 db.<a class="code" href="classdbDatabase.html#dbSubSqla30">insertRecord</a>(db.<a class="code" href="classdbDatabase.html#dbSubSqla38">lookupTable</a>(&T::dbDescriptor), &ref, &record);01415 <span class="keywordflow">return</span> ref;01416 }01417 <span class="preprocessor">#endif</span>01418 <span class="preprocessor"></span><a name="l01422"></a><a class="code" href="classdbSearchContext.html">01422</a> <span class="keyword">class </span><a class="code" href="classdbSearchContext.html">dbSearchContext</a> { 01423 <span class="keyword">public</span>:01424 dbDatabase* db;01425 dbExprNode* condition;01426 <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor;01427 <span class="keywordtype">char</span>* firstKey;01428 <span class="keywordtype">int</span> firstKeyInclusion;01429 <span class="keywordtype">char</span>* lastKey;01430 <span class="keywordtype">int</span> lastKeyInclusion;01431 <span class="keywordtype">int</span> type;01432 <span class="keywordtype">int</span> sizeofType;01433 <span class="keywordtype">int</span> prefixLength;01434 dbUDTComparator comparator;01435 <span class="keywordtype">int</span> offs;01436 <span class="keywordtype">int</span> probes;01437 };01438 01439 01440 END_FASTDB_NAMESPACE01441 01442 <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 + -