-Engines::EngineComponent_ptr
-SALOME_LifeCycleCORBA::
-FindOrLoad_Component(const Engines::MachineParameters& params,
- const char *componentName,
- int studyId)
-{
- // --- Check if Component Name is known in ModuleCatalog
-
- if (! isKnownComponentClass(componentName))
- return Engines::EngineComponent::_nil();
-
- Engines::ContainerParameters new_params;
- convert(params, new_params);
- new_params.resource_params.componentList.length(1);
- new_params.resource_params.componentList[0] = componentName;
-
- // For Compatibility -> if hostname == localhost put name == hostname
- if (std::string(new_params.resource_params.hostname.in()) == "localhost")
- {
- new_params.resource_params.hostname = CORBA::string_dup(Kernel_Utils::GetHostname().c_str());
- new_params.resource_params.name = CORBA::string_dup(Kernel_Utils::GetHostname().c_str());
- }
-
- Engines::ResourceList_var listOfResources;
- try
- {
- listOfResources = _ResManager->GetFittingResources(new_params.resource_params);
- }
- catch( const SALOME::SALOME_Exception& ex )
- {
- return Engines::EngineComponent::_nil();
- }
-
- Engines::EngineComponent_var compo = _FindComponent(new_params,
- componentName,
- studyId,
- listOfResources);
-
- if(CORBA::is_nil(compo))
- {
- new_params.resource_params.resList = listOfResources;
- compo = _LoadComponent(new_params,
- componentName,
- studyId);
- }
-
- return compo._retn();
-}
-