src/org/objectweb/cjdbc/controller/scheduler/raidb1/RAIDb1OptimisticQueryLevelScheduler.java

説明を見る。
00001 00025 package org.objectweb.cjdbc.controller.scheduler.raidb1; 00026 00027 import java.sql.SQLException; 00028 import java.util.HashSet; 00029 00030 import org.objectweb.cjdbc.common.sql.AbstractWriteRequest; 00031 import org.objectweb.cjdbc.common.sql.ParsingGranularities; 00032 import org.objectweb.cjdbc.common.sql.SelectRequest; 00033 import org.objectweb.cjdbc.common.xml.DatabasesXmlTags; 00034 import org.objectweb.cjdbc.controller.requestmanager.RAIDbLevels; 00035 import org.objectweb.cjdbc.controller.scheduler.AbstractScheduler; 00036 00046 public class RAIDb1OptimisticQueryLevelScheduler extends AbstractScheduler 00047 { 00048 00049 // 00050 // How the code is organized ? 00051 // 00052 // 1. Member variables 00053 // 2. Constructor 00054 // 3. Request handling 00055 // 4. Transaction management 00056 // 5. Debug/Monitoring 00057 // 00058 00059 private long requestId; 00060 private HashSet completedWrites = new HashSet(); // set of tids 00061 00062 // 00063 // Constructor 00064 // 00065 00069 public RAIDb1OptimisticQueryLevelScheduler() 00070 { 00071 super(RAIDbLevels.RAIDb1, ParsingGranularities.NO_PARSING); 00072 requestId = 0; 00073 } 00074 00075 // 00076 // Request Handling 00077 // 00078 00085 public synchronized void scheduleReadRequest(SelectRequest request) 00086 throws SQLException 00087 { 00088 request.setId(requestId++); 00089 } 00090 00094 public final void readCompletedNotify(SelectRequest request) 00095 { 00096 } 00097 00104 public synchronized void scheduleNonSuspendedWriteRequest( 00105 AbstractWriteRequest request) throws SQLException 00106 { 00107 request.setId(requestId++); 00108 // if (request.isAutoCommit()) 00109 // request.setBlocking(true); 00110 // else 00111 request.setBlocking(completedWrites.contains(new Long(request 00112 .getTransactionId()))); 00113 } 00114 00118 public final synchronized void notifyWriteCompleted( 00119 AbstractWriteRequest request) 00120 { 00121 if (!request.isAutoCommit()) 00122 completedWrites.add(new Long(request.getTransactionId())); 00123 } 00124 00125 // 00126 // Transaction Management 00127 // 00128 00132 protected final void commitTransaction(long transactionId) 00133 { 00134 completedWrites.remove(new Long(transactionId)); 00135 } 00136 00140 protected final void rollbackTransaction(long transactionId) 00141 { 00142 completedWrites.remove(new Long(transactionId)); 00143 } 00144 00145 // 00146 // Debug/Monitoring 00147 // 00148 00152 public String getXmlImpl() 00153 { 00154 return "<" + DatabasesXmlTags.ELT_RAIDb1Scheduler + " " 00155 + DatabasesXmlTags.ATT_level + "=\"" 00156 + DatabasesXmlTags.VAL_optimisticQuery + "\"/>"; 00157 } 00158 00159 }

CJDBCversion1.0.4に対してTue Oct 12 15:16:03 2004に生成されました。 doxygen 1.3.8