📄 database_8h-source.html
字号:
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& 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>& 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>& 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><<span class="keyword">class</span> T>01217 <a class="code" href="classdbReference.html">dbReference<T></a> insert(T <span class="keyword">const</span>& record) { 01218 <a class="code" href="classdbReference.html">dbReference<T></a> ref;01219 T::dbDescriptor.getDatabase()->insertRecord(&T::dbDescriptor, &ref, &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><<span class="keyword">class</span> T>01225 <a class="code" href="classdbReference.html">dbReference<T></a> insert(dbDatabase& db, T <span class="keyword">const</span>& record) {01226 <a class="code" href="classdbReference.html">dbReference<T></a> ref;01227 db.<a class="code" href="classdbDatabase.html#dbSubSqla27">insertRecord</a>(db.<a class="code" href="classdbDatabase.html#dbSubSqla32">lookupTable</a>(&T::dbDescriptor), &ref, &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 + -