ACE_CString_Vector MACIContainerServices::findComponents(const char *nameWildcard, const char *typeWildcard) { ACE_CString_Vector names; if(nameWildcard == NULL) { nameWildcard = "*"; } if(typeWildcard == NULL) { typeWildcard = "*"; } maci::HandleSeq seq; maci::ComponentInfoSeq_var devs = m_manager->get_component_info(m_componentHandle,seq,nameWildcard,typeWildcard,false); CORBA::ULong len = devs->length (); for (CORBA::ULong i=0; i < len; i++) { names.push_back(devs[i].name.in()); } return names; }
void MACIContainerServices::releaseAllComponents() { ACE_CString_Vector componentsToRelease; { ACE_Guard<ACE_Recursive_Thread_Mutex> guard(m_usedComponents.mutex()); // get reverse deactivation order of components for (COMPONENT_HASH_MAP::CONST_ITERATOR iter(m_usedComponents); !iter.done(); iter.advance()) componentsToRelease.push_back(iter->key()); } unsigned int len = componentsToRelease.size(); for (unsigned int i = 0; i < len; i++) this->releaseComponent(componentsToRelease[i].c_str()); }
void MACIContainerServices::fireComponentsUnavailable(ACE_CString_Vector& compNames){ if (!withCompListener || compListener == NULL) { return; } if (compListener->includeForeignComponents()) { ContainerServices::fireComponentsUnavailable(compNames); } else if (m_usedComponents.current_size() > 0) { ACE_CString_Vector interesting; for (int i=0; i < (int)compNames.size(); i++) { ACE_CString cn = compNames[i]; if (m_usedComponents.find(cn) != -1) { interesting.push_back(cn); } } if (interesting.size() > 0) ContainerServices::fireComponentsUnavailable(interesting); } }