public TransactionSimulator(IResource resource, IResourceManager resourceMgr) throws ACIDException { String id = "nc1"; transactionProvider = new TransactionSubsystem(id, null); transactionManager = transactionProvider.getTransactionManager(); logManager = transactionProvider.getLogManager(); lockManager = transactionProvider.getLockManager(); recoveryManager = transactionProvider.getRecoveryManager(); transactionProvider .getTransactionalResourceRepository() .registerTransactionalResourceManager(resourceMgr.getResourceManagerId(), resourceMgr); this.resourceMgr = resourceMgr; this.logger = resource.getLogger(); this.resource = resource; memLSN = LogUtil.getDummyLogicalLogLocator(transactionProvider.getLogManager()); }
public void executeTransactionOperation( TransactionContext txnContext, FileResource.CounterOperation operation) throws ACIDException { // lockManager.lock(txnContext, resourceId, 0); ILogManager logManager = transactionProvider.getLogManager(); int currentValue = ((FileResource) resource).getMemoryCounter(); int finalValue; switch (operation) { case INCREMENT: finalValue = currentValue + 1; int logRecordLength = ((FileLogger) logger).generateLogRecordContent(currentValue, finalValue); logManager.log( LogType.UPDATE, txnContext, 1, -1, 1, ResourceType.LSM_BTREE, 0, null, logger, memLSN); ((FileResource) resource).increment(); break; case DECREMENT: finalValue = currentValue - 1; logRecordLength = ((FileLogger) logger).generateLogRecordContent(currentValue, finalValue); logManager.log( LogType.UPDATE, txnContext, 1, -1, 1, ResourceType.LSM_BTREE, 0, null, logger, memLSN); ((FileResource) resource).decrement(); break; } }