void ArxDbgUiTdcSysReactors::attachTransactionReactorToAll() { if (m_transReactor) { AcDbDatabase* tmpDb; AcDbVoidPtrArray dbPtrs; ArxDbgUtils::getAllDatabases(dbPtrs); AcDbTransactionManager* tmpTrMgr; AcDbVoidPtrArray trMgrs; // keep track of ones we've attached to since some db's share transMgr acutPrintf(_T("\nAttaching Transaction Reactor to all active databases...")); int len = dbPtrs.length(); for (int i=0; i<len; i++) { tmpDb = static_cast<AcDbDatabase*>(dbPtrs[i]); tmpTrMgr = tmpDb->transactionManager(); if (tmpTrMgr && (trMgrs.contains(tmpTrMgr) == false)) { tmpTrMgr->addReactor(m_transReactor); trMgrs.append(tmpTrMgr); } else { CString str; acutPrintf("\nSkipping duplicate transaction manager for: (%s)", ArxDbgUtils::dbToStr(tmpDb, str)); } } } }
void ArxDbgUiTdcSysReactors::removeTransactionReactorFromAll() { if (m_transReactor) { AcDbDatabase* tmpDb; AcDbVoidPtrArray dbPtrs; ArxDbgUtils::getAllDatabases(dbPtrs); AcDbTransactionManager* tmpTrMgr; acutPrintf(_T("\nRemoving Transaction Reactor from all active databases...")); int len = dbPtrs.length(); for (int i=0; i<len; i++) { tmpDb = static_cast<AcDbDatabase*>(dbPtrs[i]); tmpTrMgr = tmpDb->transactionManager(); if (tmpTrMgr) tmpTrMgr->removeReactor(m_transReactor); } } }