#include <jccl/RTRC/DependencyManager.h>
Collaboration diagram for jccl::DependencyManager:

Public Member Functions | |
| void | registerChecker (DepChecker *checker) |
| Registers a new dependency checker. | |
| bool | isSatisfied (ConfigElementPtr element) |
| Checks if dependencies are satisfied for the given element. | |
| void | debugOutDependencies (ConfigElementPtr element, int dbg_lvl) |
| Prints information about element's dependencies. | |
Private Member Functions | |
| DependencyManager () | |
| Constructor. | |
| DepChecker * | findDepChecker (ConfigElementPtr element) |
| Finds a DepChecker that can handle element. | |
| void | debugDump () |
| Prints information about the DependencyManager's state to vprDEBUG. | |
| vprSingletonHeader (DependencyManager) | |
Private Attributes | |
| std::vector< DepChecker * > | mDepCheckers |
| List of dependency checkers. | |
| DepChecker | mDefaultChecker |
| Default dependency checker. | |
The Dependency Manager works in conjunction with the Config Manager, and checks for dependencies for any configuration add request. The default behavior is to simply check the Config Manager's active list for all jccl::ConfigElement objects that the request's jccl::ConfigElement refers to. However, additional DepCheckers can be registered to provide specialized functionality.
Note that this class is a singleton, primarily so that the master list of DepCheckers can be appended to by any entity in the system.
Definition at line 61 of file DependencyManager.h.
| jccl::DependencyManager::DependencyManager | ( | ) | [private] |
Constructor.
Private since this is a singleton.
Definition at line 47 of file DependencyManager.cpp.
References mDepCheckers.
00047 : mDepCheckers(), mDefaultChecker() 00048 { 00049 mDepCheckers = std::vector<DepChecker*>(0); 00050 //debugDump(); 00051 }
| void jccl::DependencyManager::registerChecker | ( | DepChecker * | checker | ) |
Registers a new dependency checker.
Definition at line 54 of file DependencyManager.cpp.
References debugDump(), jccl::DepChecker::getCheckerName(), jcclDBG_RECONFIG(), and mDepCheckers.
00055 { 00056 vprASSERT(checker != NULL); 00057 mDepCheckers.push_back(checker); // Add the checker to the list 00058 vprDEBUG(jcclDBG_RECONFIG, vprDBG_CONFIG_LVL) 00059 << "DependencyManager: Registered: " 00060 << std::setiosflags(std::ios::right) << std::setw(25) 00061 << std::setfill(' ') << checker->getCheckerName().c_str() 00062 << std::resetiosflags(std::ios::right) 00063 << " type: " << typeid(*checker).name() << std::endl 00064 << vprDEBUG_FLUSH; 00065 debugDump(); 00066 }
| bool jccl::DependencyManager::isSatisfied | ( | ConfigElementPtr | element | ) |
Checks if dependencies are satisfied for the given element.
Definition at line 69 of file DependencyManager.cpp.
References findDepChecker().
Referenced by jccl::ConfigElementHandler::configProcessPending(), and jccl::ConfigManager::scanForLostDependencies().
00070 { 00071 vprASSERT(NULL != element.get()); 00072 DepChecker* checker = findDepChecker(element); 00073 return checker->depSatisfied(element); 00074 }
| void jccl::DependencyManager::debugOutDependencies | ( | ConfigElementPtr | element, | |
| int | dbg_lvl | |||
| ) |
Prints information about element's dependencies.
Definition at line 77 of file DependencyManager.cpp.
References findDepChecker().
Referenced by jccl::ConfigElementHandler::configProcessPending().
00079 { 00080 vprASSERT(NULL != element.get()); 00081 DepChecker* checker = findDepChecker(element); 00082 checker->debugOutDependencies(element,dbg_lvl); 00083 }
| DepChecker * jccl::DependencyManager::findDepChecker | ( | ConfigElementPtr | element | ) | [private] |
Finds a DepChecker that can handle element.
DepCheckers list the jccl::ConfigElement types that they know how to handle; this is checked versus element.getDefToken().
Definition at line 86 of file DependencyManager.cpp.
References mDefaultChecker, and mDepCheckers.
Referenced by debugOutDependencies(), and isSatisfied().
00087 { 00088 vprASSERT(NULL != element.get()); 00089 00090 //std::string element_type; 00091 //element_type = (std::string)element->getType(); 00092 00093 for(unsigned int i=0;i<mDepCheckers.size();i++) 00094 { 00095 // Get next constructor 00096 DepChecker* checker = mDepCheckers[i]; 00097 vprASSERT(checker != NULL); 00098 00099 if(checker->canHandle(element)) 00100 { 00101 return checker; 00102 } 00103 } 00104 00105 return &mDefaultChecker; 00106 }
| void jccl::DependencyManager::debugDump | ( | ) | [private] |
Prints information about the DependencyManager's state to vprDEBUG.
Definition at line 109 of file DependencyManager.cpp.
References jcclDBG_RECONFIG(), and mDepCheckers.
Referenced by registerChecker().
00110 { 00111 //vprDEBUG_BEGIN(jcclDBG_RECONFIG, jcclDBG_CONFIG_LVL) << "DependencyManager::debugDump\n" << vprDEBUG_FLUSH; 00112 vprDEBUG_BEGIN(jcclDBG_RECONFIG, vprDBG_STATE_LVL) 00113 << "----- Current dependency checkers -----\n" << vprDEBUG_FLUSH; 00114 vprDEBUG_NEXT(jcclDBG_RECONFIG, vprDBG_STATE_LVL) 00115 << "num checkers:" << mDepCheckers.size() << "\n" 00116 << vprDEBUG_FLUSH; 00117 vprDEBUG_NEXT(jcclDBG_RECONFIG, vprDBG_STATE_LVL) 00118 << "-1: Checker: default type: default checker recog: all (this is a fallback)\n" 00119 << vprDEBUG_FLUSH; 00120 00121 for(unsigned int cNum=0;cNum<mDepCheckers.size();cNum++) 00122 { 00123 DepChecker* checker = mDepCheckers[cNum]; 00124 vprDEBUG_NEXT(jcclDBG_RECONFIG, vprDBG_STATE_LVL) 00125 << cNum << ": Checker:" << (void*)checker 00126 << " type:" << typeid(*checker).name() 00127 << " recog:" << checker->getCheckerName().c_str() 00128 << "\n" << vprDEBUG_FLUSH; 00129 } 00130 00131 vprDEBUG_END(jcclDBG_RECONFIG, vprDBG_STATE_LVL) 00132 << "---------------------\n" << vprDEBUG_FLUSH; 00133 }
| jccl::DependencyManager::vprSingletonHeader | ( | DependencyManager | ) | [private] |
std::vector<DepChecker*> jccl::DependencyManager::mDepCheckers [private] |
List of dependency checkers.
Definition at line 99 of file DependencyManager.h.
Referenced by debugDump(), DependencyManager(), findDepChecker(), and registerChecker().
Default dependency checker.
Definition at line 102 of file DependencyManager.h.
Referenced by findDepChecker().
1.5.1