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

📄 database_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 5 页
字号:
01345 
01351     <span class="keywordtype">void</span> updateCursors(oid_t oid, <span class="keywordtype">bool</span> removed = <span class="keyword">false</span>);
01352     
01356     <span class="keywordtype">void</span> recovery();
01357 
01366     <span class="keywordtype">bool</span> checkVersion();
01367 
<a name="l01373"></a><a class="code" href="classdbDatabase.html#dbSubSqlb38">01373</a>     oid_t allocateObject(dbInternalObject marker) {
01374         oid_t oid = allocateId();
01375         offs_t pos = allocate(internalObjectSize[marker]) + marker;
01376         currIndex[oid] = pos;
01377         <span class="keywordflow">return</span> oid;
01378     }
01379 
<a name="l01386"></a><a class="code" href="classdbDatabase.html#dbSubSqlb39">01386</a>     oid_t allocateRow(oid_t tableId, size_t size)
01387     {
01388         oid_t oid = allocateId();
01389         allocateRow(tableId, oid, size);
01390         <span class="keywordflow">return</span> oid;
01391     }
01392     
01400     <span class="keywordtype">void</span> allocateRow(oid_t tableId, oid_t oid, size_t size);
01401 
01407     <span class="keywordtype">void</span> freeRow(oid_t tableId, oid_t oid);
01408 
01412     <span class="keywordtype">void</span> freeObject(oid_t oid); 
01413     
01417     <span class="keyword">static</span> <span class="keywordtype">void</span> deleteCompiledQuery(dbExprNode* tree); 
01418 
01425     <span class="keywordtype">bool</span> beginTransaction(dbLockType);
01426 
<a name="l01430"></a><a class="code" href="classdbDatabase.html#dbSubSqlb44">01430</a>     <span class="keywordtype">void</span> endTransaction() { 
01431         endTransaction(threadContext.get());
01432     }
01433     
01438     <span class="keywordtype">void</span> endTransaction(dbDatabaseThreadContext* ctx);
01439 
01440     <span class="keyword">virtual</span> <span class="keywordtype">void</span> waitTransactionAcknowledgement();
01441 
01446     <span class="keywordtype">void</span> initializeMetaTable();
01447     
01455     <span class="keywordtype">bool</span> loadScheme(<span class="keywordtype">bool</span> alter);
01456 
01462     <span class="keywordtype">bool</span> completeDescriptorsInitialization();
01463 
01469     <span class="keywordtype">void</span> reformatTable(oid_t tableId, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);
01470 
01478     <span class="keywordtype">bool</span> addIndices(<span class="keywordtype">bool</span> alter, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);
01479 
01485     oid_t addNewTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);
01486 
01492     <span class="keywordtype">void</span> updateTableDescriptor(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t tableId);
01493 
01502     <span class="keywordtype">void</span> insertInverseReference(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, 
01503                                 oid_t reverseId, oid_t targetId);
01504 
01510     <span class="keywordtype">void</span> removeInverseReferences(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t oid);
01511 
01520     <span class="keywordtype">void</span> removeInverseReference(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, 
01521                                 oid_t reverseId, oid_t targetId);
01522 
01527     <span class="keywordtype">void</span> deleteTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);
01528 
01533     <span class="keywordtype">void</span> dropTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);
01534 
01539     <span class="keywordtype">void</span> createIndex(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);
01540 
01545     <span class="keywordtype">void</span> createHashTable(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);
01546 
01551     <span class="keywordtype">void</span> dropIndex(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);
01552 
01557     <span class="keywordtype">void</span> dropHashTable(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);
01558 
01564     <span class="keywordtype">void</span> linkTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, oid_t tableId);
01565 
01570     <span class="keywordtype">void</span> unlinkTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table);
01571 
01578     <span class="keywordtype">bool</span> wasReserved(offs_t pos, size_t size);
01579 
01588     <span class="keywordtype">void</span> reserveLocation(dbLocation&amp; location, offs_t pos, size_t size);
01589 
01594     <span class="keywordtype">void</span> commitLocation();
01595 
01601     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* findTable(<span class="keywordtype">char</span> <span class="keyword">const</span>* name);
01602     
01609     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* findTableByName(<span class="keywordtype">char</span> <span class="keyword">const</span>* name);
01610 
<a name="l01615"></a><a class="code" href="classdbDatabase.html#dbSubSqlb70">01615</a>     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* getTables() { 
01616         <span class="keywordflow">return</span> tables;
01617     }
01618 
01622     <span class="keywordtype">void</span> setDirty();
01623 
01629     <span class="keywordtype">bool</span> isFree(offs_t pos, <span class="keywordtype">int</span> objBitSize);
01630 
01636     <span class="keywordtype">void</span> markAsAllocated(offs_t pos, <span class="keywordtype">int</span> objBitSize);
01637 
01638 };
01639 
01640 
01641 <span class="preprocessor">#ifdef REPLICATION_SUPPORT</span>
01642 <span class="preprocessor"></span>
01643 <span class="preprocessor">#include "sockio.h"</span>
01644 
01645 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbConnection { 
01646  <span class="keyword">public</span>:
01647     socket_t*    reqSock;
01648     socket_t*    respSock;
01649     dbLocalEvent statusEvent;
01650     dbLocalEvent readyEvent;
01651     dbLocalEvent useEvent;
01652     dbLocalEvent committedEvent;
01653     dbMutex      writeCS;
01654     <span class="keywordtype">int</span>          useCount;
01655     <span class="keywordtype">int</span>          waitUseEventFlag;
01656     <span class="keywordtype">int</span>          waitStatusEventFlag;
01657     <span class="keywordtype">int</span>          status;
01658     <span class="keywordtype">int</span>          updateCounter;
01659     <span class="keywordtype">int</span>          nRecoveredPages;
01660 
01661     dbConnection() { 
01662         readyEvent.open();
01663         useEvent.open();
01664         statusEvent.open();
01665         committedEvent.open();
01666         useCount = 0;
01667         waitUseEventFlag = 0;
01668         waitStatusEventFlag = 0;
01669         status = 0;
01670         reqSock = respSock = NULL;
01671         nRecoveredPages = 0;
01672     }
01673     ~dbConnection() { 
01674         readyEvent.close();
01675         useEvent.close();
01676         statusEvent.close();
01677         committedEvent.close();
01678         <span class="keyword">delete</span> reqSock;
01679         <span class="keyword">delete</span> respSock;
01680     }
01681 }; 
01682 
01683 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbReplicatedDatabase : <span class="keyword">public</span> dbDatabase {
01684     <span class="keyword">friend</span> <span class="keyword">class </span>dbFile;
01685   <span class="keyword">protected</span>:
01686     <span class="keywordtype">char</span>**        serverURL;
01687     <span class="keywordtype">int</span>           nServers;
01688     <span class="keywordtype">int</span>           id;
01689     dbConnection* con;
01690 
01691     <span class="keyword">enum</span> NodeStatus { 
01692         ST_OFFLINE,  <span class="comment">// node is not available </span>
01693         ST_ONLINE,   <span class="comment">// node is available </span>
01694         ST_ACTIVE,   <span class="comment">// primary node is running, replicating changes</span>
01695         ST_STANDBY,  <span class="comment">// standby node receives changes from primary node</span>
01696         ST_RECOVERED <span class="comment">// node is recovered after the fault</span>
01697     };
01698     
01699     dbLocalEvent  startEvent;
01700     dbLocalEvent  recoveredEvent;
01701     dbMutex       startCS;
01702     dbMutex       commitCS;
01703     fd_set        inputSD;
01704     <span class="keywordtype">int</span>           nInputSD;
01705 
01706     <span class="keywordtype">int</span>           activeNodeId;
01707     <span class="keywordtype">int</span>           masterNodeId;
01708     <span class="keywordtype">bool</span>          onlineRecovery;
01709     <span class="keywordtype">bool</span>          handshake; 
01710     dbMutex       sockCS;
01711     socket_t*     acceptSock;
01712     dbThread      readerThread;
01713 
01714     <span class="keywordtype">int</span> pollInterval;
01715     <span class="keywordtype">int</span> waitReadyTimeout;
01716     <span class="keywordtype">int</span> waitStatusTimeout;
01717     <span class="keywordtype">int</span> recoveryConnectionAttempts;
01718     <span class="keywordtype">int</span> startupConnectionAttempts;
01719     <span class="keywordtype">int</span> replicationWriteTimeout;
01720     <span class="keywordtype">int</span> maxAsyncRecoveryIterations;
01721 
01722     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc startReader(<span class="keywordtype">void</span>* arg);
01723 
01724     <span class="keywordtype">void</span> waitTransactionAcknowledgement();
01725 
01726     <span class="keywordtype">void</span> reader();
01727     <span class="keyword">virtual</span> <span class="keywordtype">void</span> close0();
01728     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isReplicated();
01729 
01730   <span class="keyword">public</span>:
01731     <span class="keywordtype">void</span> deleteConnection(<span class="keywordtype">int</span> nodeId);
01732     <span class="keywordtype">void</span> lockConnection(<span class="keywordtype">int</span> nodeId);
01733     <span class="keywordtype">void</span> unlockConnection(<span class="keywordtype">int</span> nodeId);
01734     <span class="keywordtype">void</span> changeActiveNode();
01735     <span class="keywordtype">void</span> addConnection(<span class="keywordtype">int</span> nodeId, socket_t* s);
01736     <span class="keywordtype">bool</span> writeReq(<span class="keywordtype">int</span> nodeId, ReplicationRequest <span class="keyword">const</span>&amp; hdr, 
01737                   <span class="keywordtype">void</span>* body = NULL, size_t bodySize = 0);
01738     <span class="keywordtype">bool</span> writeResp(<span class="keywordtype">int</span> nodeId, ReplicationRequest <span class="keyword">const</span>&amp; hdr);
01739 
01740     <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,
01741               <span class="keywordtype">int</span> id, <span class="keywordtype">char</span>* servers[], <span class="keywordtype">int</span> nServers);
01742     <span class="keywordtype">bool</span> <a class="code" href="classdbDatabase.html#dbSubSqla6">open</a>(OpenParameters&amp; params);
01743 
01744     <span class="keywordtype">int</span> getNumberOfOnlineNodes();
01745 
01746     dbReplicatedDatabase(dbAccessType type = dbAllAccess,
01747                          size_t dbInitSize = dbDefaultInitDatabaseSize

⌨️ 快捷键说明

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