Salome HOME
updated copyright message
[modules/kernel.git] / src / ResourcesManager / SALOME_ResourcesManager.cxx
index 32ae4e4a0bc64666f4511665fb74951cdfe691ff..632a326b651fbe580c212c436365748ea5f9b44f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2023  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -58,7 +58,7 @@ const char *SALOME_ResourcesManager::_ResourcesManagerNameInNS = "/ResourcesMana
 
 SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb,
                                                  PortableServer::POA_var poa,
-                                                 SALOME_NamingService *ns,
+                                                 SALOME_NamingService_Abstract *ns,
                                                  const char *xmlFilePath)
 : _rm(new ResourcesManager_cpp(xmlFilePath))
 {
@@ -94,7 +94,7 @@ SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb,
 
 SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb, 
                                                  PortableServer::POA_var poa, 
-                                                 SALOME_NamingService *ns) : _rm(new ResourcesManager_cpp())
+                                                 SALOME_NamingService_Abstract *ns) : _rm(new ResourcesManager_cpp())
 {
   MESSAGE("SALOME_ResourcesManager constructor");
   _NS = ns;
@@ -111,7 +111,8 @@ SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb,
   PortableServer::ObjectId_var id = _poa->activate_object(this);
   CORBA::Object_var obj = _poa->id_to_reference(id);
   Engines::ResourcesManager_var refContMan = Engines::ResourcesManager::_narrow(obj);
-  _NS->Register(refContMan,_ResourcesManagerNameInNS);
+  if(_NS)
+    _NS->Register(refContMan,_ResourcesManagerNameInNS);
 
   MESSAGE("SALOME_ResourcesManager constructor end");
 }
@@ -137,13 +138,18 @@ SALOME_ResourcesManager::~SALOME_ResourcesManager()
 void SALOME_ResourcesManager::Shutdown()
 {
   MESSAGE("Shutdown");
+  if(!_NS)
+    return ;
   _NS->Destroy_Name(_ResourcesManagerNameInNS);
   PortableServer::ObjectId_var oid = _poa->servant_to_id(this);
   _poa->deactivate_object(oid);
 }
 
 /*!
- * Return list of resources available (regarding content of CatalogResources.xml). And for each resource the number of proc available of it.
+ * Return list of resources available (regarding content of CatalogResources.xml) but select only those with canRunContainers attribute set to true.
+ * And for each resource the number of proc available of it.
+ * 
+ * \sa SALOME_ResourcesManager::ListAllResourcesInCatalog
  */
 void SALOME_ResourcesManager::ListAllAvailableResources(Engines::ResourceList_out machines, Engines::IntegerList_out nbProcsOfMachines)
 {
@@ -162,14 +168,33 @@ void SALOME_ResourcesManager::ListAllAvailableResources(Engines::ResourceList_ou
   machines=new Engines::ResourceList;
   nbProcsOfMachines=new Engines::IntegerList;
   std::size_t sz(ret0.size());
-  machines->length(sz); nbProcsOfMachines->length(sz);
+  machines->length((CORBA::ULong)sz); nbProcsOfMachines->length((CORBA::ULong)sz);
   for(std::size_t j=0;j<sz;j++)
     {
-      (*machines)[j]=CORBA::string_dup(ret0[j].c_str());
-      (*nbProcsOfMachines)[j]=ret1[j];
+      (*machines)[(CORBA::ULong)j]=CORBA::string_dup(ret0[j].c_str());
+      (*nbProcsOfMachines)[(CORBA::ULong)j]=ret1[j];
     }
 }
 
+/*!
+ * Return list of resources available (regarding content of CatalogResources.xml) whatever canRunContainers attribute value.
+ * 
+ * \sa SALOME_ResourcesManager::ListAllAvailableResources
+ */
+Engines::ResourceList *SALOME_ResourcesManager::ListAllResourcesInCatalog()
+{
+  const MapOfParserResourcesType& zeList(_rm->GetList());
+  auto sz = zeList.size();
+  Engines::ResourceList *ret(new Engines::ResourceList);
+  ret->length( sz );
+  CORBA::ULong i(0);
+  for(auto it : zeList)
+  {
+    (*ret)[i++] = CORBA::string_dup( it.second.HostName.c_str() );
+  }
+  return ret;
+}
+
 //=============================================================================
 //! get the name of resources fitting the specified constraints (params)
 /*!