1 9 package org.ozoneDB.core.storage.wizardStore; 10 11 import java.io.IOException ; 12 13 import org.ozoneDB.DxLib.*; 14 import org.ozoneDB.core.Env; 15 import org.ozoneDB.core.ObjectID; 16 import org.ozoneDB.core.storage.ClusterID; 17 import org.ozoneDB.util.LogWriter; 18 19 20 24 public final class IDTable extends DxDiskHashMap { 25 26 final static long serialVersionUID = 1L; 27 28 public final static int MAX_CACHE_SIZE = 2000; 29 30 36 37 public IDTable(String _baseFileName, int _maxBufferSize, int _cacheBits, int[] _tableBitSizes) { 38 super(_baseFileName, _maxBufferSize, _cacheBits, _tableBitSizes); 39 } 43 44 45 public synchronized void close() throws Exception { 46 writeDirtyTables(); 47 setReusable(true); 48 } 49 50 51 public synchronized void writeDirtyTables() throws IOException { 52 DxIterator it = buffer.iterator(); 53 DxDiskSubTable table = null; 54 while ((table = (DxDiskSubTable) it.next()) != null) { 55 if (table.isDirty()) { 56 if (false) { 57 Env.currentEnv().logWriter.newEntry(this, "write dirty table: " + table.getFile(), LogWriter.DEBUG); 58 } 59 table.writeTable(); 60 } 61 } 62 } 63 64 65 public boolean isDirtyTable(DxDiskSubTable table) { 66 boolean result = table.isDirty(); 67 if (false) { 68 Env.currentEnv().logWriter.newEntry(this, "isDirtyTable(): name=" + table.getFile() + ", dirty=" + result, LogWriter.DEBUG); 69 } 70 return result; 71 } 72 73 74 public void printStatistics() { 75 Env.currentEnv().logWriter.newEntry(this, "Statistics:", LogWriter.INFO); 76 Env.currentEnv().logWriter.newEntry(this, " sub-table accesses: " + bufferAccesses + " hits: " + bufferHits + " loads: " + (bufferAccesses - bufferHits), LogWriter.INFO); 77 Env.currentEnv().logWriter.newEntry(this, " cache accesses: " + cacheAccesses + " hits: " + cacheHits, LogWriter.INFO); 78 } 79 80 81 public DxDiskHashNodeLeaf newNodeLeaf() { 82 return new IDTableNodeLeaf(this); 83 84 } 94 95 96 public DxDiskHashNodeBranch newNodeBranch() { 97 return new IDTableNodeBranch(this); 98 99 } 109 110 111 public DxKeyData newKeyData() { 112 return new DxKeyData(); 113 114 } 124 125 126 public ObjectID newObjectID() { 127 return new ObjectID(); 129 } 130 131 132 public ClusterID newClusterID() { 133 return new ClusterID(); 135 } 136 137 138 142 public synchronized void deleteRequest(DxDiskSubTable subTable) { 143 183 super.deleteRequest(subTable); 184 } 185 186 } 187 | Popular Tags |