Beispiel #1
0
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;
}
Beispiel #2
0
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());
}
Beispiel #3
0
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);
    }
 }