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

📄 database_8h-source.html

📁 FastDb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00959 00965     <span class="keywordtype">void</span> reformatTable(oid_t tableId, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);00966 00974     <span class="keywordtype">bool</span> addIndices(<span class="keywordtype">bool</span> alter, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);00975 00981     oid_t addNewTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);00982 00988     <span class="keywordtype">void</span> updateTableDescriptor(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t tableId);00989 00998     <span class="keywordtype">void</span> insertInverseReference(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, 00999                                 oid_t reverseId, oid_t targetId);01000 01006     <span class="keywordtype">void</span> removeInverseReferences(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t oid);01007 01016     <span class="keywordtype">void</span> removeInverseReference(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, 01017                                 oid_t reverseId, oid_t targetId);01018 01023     <span class="keywordtype">void</span> deleteTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01024 01029     <span class="keywordtype">void</span> dropTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01030 01035     <span class="keywordtype">void</span> createIndex(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01036 01041     <span class="keywordtype">void</span> createHashTable(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01042 01047     <span class="keywordtype">void</span> dropIndex(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01048 01053     <span class="keywordtype">void</span> dropHashTable(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01054 01060     <span class="keywordtype">void</span> linkTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, oid_t tableId);01061 01066     <span class="keywordtype">void</span> unlinkTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table);01067 01074     <span class="keywordtype">bool</span> wasReserved(offs_t pos, size_t size);01075 01084     <span class="keywordtype">void</span> reserveLocation(dbLocation&amp; location, offs_t pos, size_t size);01085 01090     <span class="keywordtype">void</span> commitLocation();01091 01097     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* findTable(<span class="keywordtype">char</span> <span class="keyword">const</span>* name);01098     01105     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* findTableByName(<span class="keywordtype">char</span> <span class="keyword">const</span>* name);01106 01111     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* getTables();01112 01116     <span class="keywordtype">void</span> setDirty();01117 };01118 01119 01120 <span class="preprocessor">#ifdef REPLICATION_SUPPORT</span>01121 <span class="preprocessor"></span>01122 <span class="preprocessor">#include "sockio.h"</span>01123 01124 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbConnection { 01125  <span class="keyword">public</span>:01126     socket_t*    reqSock;01127     socket_t*    respSock;01128     dbLocalEvent statusEvent;01129     dbLocalEvent readyEvent;01130     dbLocalEvent useEvent;01131     dbMutex      writeCS;01132     <span class="keywordtype">int</span>          useCount;01133     <span class="keywordtype">int</span>          waitUseEventFlag;01134     <span class="keywordtype">int</span>          waitStatusEventFlag;01135     <span class="keywordtype">int</span>          status;01136 01137     dbConnection() { 01138         readyEvent.open();01139         useEvent.open();01140         statusEvent.open();01141         useCount = 0;01142         waitUseEventFlag = 0;01143         waitStatusEventFlag = 0;01144         status = 0;01145         reqSock = respSock = NULL;01146     }01147     ~dbConnection() { 01148         readyEvent.close();01149         useEvent.close();01150         statusEvent.close();01151         <span class="keyword">delete</span> reqSock;01152         <span class="keyword">delete</span> respSock;01153     }01154 };01155 01156 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbReplicatedDatabase : <span class="keyword">public</span> dbDatabase {01157     <span class="keyword">friend</span> <span class="keyword">class </span>dbFile;01158   <span class="keyword">protected</span>:01159     <span class="keywordtype">char</span>**        serverURL;01160     <span class="keywordtype">int</span>           nServers;01161     <span class="keywordtype">int</span>           id;01162     dbConnection* con;01163 01164     <span class="keyword">enum</span> NodeStatus { 01165         ST_OFFLINE,  <span class="comment">// node is not available </span>01166         ST_ONLINE,   <span class="comment">// node is available </span>01167         ST_ACTIVE,   <span class="comment">// primary node is running, replicating changes</span>01168         ST_STANDBY,  <span class="comment">// standby node receives changes from primary node</span>01169         ST_RECOVERED <span class="comment">// node is recovered after the fault</span>01170     };01171     01172     dbLocalEvent  startEvent;01173     dbMutex       startCS;01174     fd_set        inputSD;01175     <span class="keywordtype">int</span>           nInputSD;01176 01177     <span class="keywordtype">int</span>           activeNodeId;01178     dbMutex       sockCS;01179     socket_t*     acceptSock;01180     dbThread      readerThread;01181 01182     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc dbReplicatedDatabase::startReader(<span class="keywordtype">void</span>* arg);01183 01184     <span class="keywordtype">void</span> reader();01185 01186   <span class="keyword">public</span>:01187     <span class="keywordtype">void</span> deleteConnection(<span class="keywordtype">int</span> nodeId);01188     <span class="keywordtype">void</span> lockConnection(<span class="keywordtype">int</span> nodeId);01189     <span class="keywordtype">void</span> unlockConnection(<span class="keywordtype">int</span> nodeId);01190     <span class="keywordtype">void</span> changeActiveNode();01191     <span class="keywordtype">void</span> addConnection(<span class="keywordtype">int</span> nodeId, socket_t* s);01192     <span class="keywordtype">bool</span> writeReq(<span class="keywordtype">int</span> nodeId, ReplicationRequest <span class="keyword">const</span>&amp; hdr, 01193                   <span class="keywordtype">void</span>* body = NULL, size_t bodySize = 0);01194     <span class="keywordtype">bool</span> writeResp(<span class="keywordtype">int</span> nodeId, ReplicationRequest <span class="keyword">const</span>&amp; hdr);01195 01196     <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,01197               <span class="keywordtype">int</span> id, <span class="keywordtype">char</span>* servers[], <span class="keywordtype">int</span> nServers);01198     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classdbDatabase.html#dbSubSqla7">close</a>();01199 01200     <span class="keyword">static</span> <span class="keywordtype">int</span> dbPollInterval;01201     <span class="keyword">static</span> <span class="keywordtype">int</span> dbWaitReadyTimeout;01202     <span class="keyword">static</span> <span class="keywordtype">int</span> dbWaitStatusTimeout;01203     <span class="keyword">static</span> <span class="keywordtype">int</span> dbRecoveryConnectionAttempts;01204     <span class="keyword">static</span> <span class="keywordtype">int</span> dbStartupConnectionAttempts;01205 01206     dbReplicatedDatabase(dbAccessType type = dbAllAccess,01207                          size_t dbInitSize = dbDefaultInitDatabaseSize,01208                          size_t dbExtensionQuantum = dbDefaultExtensionQuantum,01209                          size_t dbInitIndexSize = dbDefaultInitIndexSize,01210                          <span class="keywordtype">int</span> nThreads = 1)01211         : dbDatabase(type, dbInitSize, dbExtensionQuantum, dbInitIndexSize, nThreads)01212     {}01213 };01214 <span class="preprocessor">#endif</span>01215 <span class="preprocessor"></span>01216 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;01217 <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> insert(T <span class="keyword">const</span>&amp; record) { 01218     <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> ref;01219     T::dbDescriptor.getDatabase()-&gt;insertRecord(&amp;T::dbDescriptor, &amp;ref, &amp;record);01220     <span class="keywordflow">return</span> ref;01221 }01222 01223 <span class="preprocessor">#ifdef NO_MEMBER_TEMPLATES</span>01224 <span class="preprocessor"></span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;01225 <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> insert(dbDatabase&amp; db, T <span class="keyword">const</span>&amp; record) {01226     <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> ref;01227     db.<a class="code" href="classdbDatabase.html#dbSubSqla27">insertRecord</a>(db.<a class="code" href="classdbDatabase.html#dbSubSqla32">lookupTable</a>(&amp;T::dbDescriptor), &amp;ref, &amp;record);01228     <span class="keywordflow">return</span> ref;01229 }01230 <span class="preprocessor">#endif</span>01231 <span class="preprocessor"></span><a name="l01235"></a><a class="code" href="classdbSearchContext.html">01235</a> <span class="keyword">class </span><a class="code" href="classdbSearchContext.html">dbSearchContext</a> { 01236   <span class="keyword">public</span>:01237     dbDatabase*     db;01238     dbExprNode*     condition;01239     <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>*    cursor;01240     <span class="keywordtype">char</span>*           firstKey;01241     <span class="keywordtype">int</span>             firstKeyInclusion;01242     <span class="keywordtype">char</span>*           lastKey;01243     <span class="keywordtype">int</span>             lastKeyInclusion;01244     <span class="keywordtype">int</span>             type;01245     <span class="keywordtype">int</span>             sizeofType;01246     dbUDTComparator comparator;01247     <span class="keywordtype">int</span>             offs;01248     <span class="keywordtype">int</span>             probes;01249 };01250 01251 01252 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Feb 12 13:04:48 2004 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.5 </small></address></body></html>

⌨️ 快捷键说明

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