1 // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License.
9 // This library is distributed in the hope that it will be useful
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "SALOME_LoadRateManager.hxx"
21 #include "utilities.h"
27 string SALOME_LoadRateManager::FindFirst(const Engines::MachineList& hosts)
29 MESSAGE("SALOME_LoadRateManager::FindFirst " << hosts.length());
31 if (hosts.length() == 0)
34 return string(hosts[0]);
37 string SALOME_LoadRateManager::FindNext(const Engines::MachineList& hosts,MapOfParserResourcesType& resList,SALOME_NamingService *ns)
39 MESSAGE("SALOME_LoadRateManager::FindNext " << hosts.length());
40 map<string, int> machines;
42 if (hosts.length() == 0)
45 for(int i=0;i<hosts.length();i++)
46 machines[string(hosts[i])] = 0;
48 ns->Change_Directory("/Containers");
49 vector<string> vec = ns->list_directory_recurs();
50 for(vector<string>::iterator iter = vec.begin();iter!=vec.end();iter++){
51 CORBA::Object_var obj=ns->Resolve((*iter).c_str());
52 Engines::Container_var cont=Engines::Container::_narrow(obj);
53 if(!CORBA::is_nil(cont)){
54 string mach = cont->getHostName();
60 ParserResourcesType resource = resList[string(hosts[0])];
61 int nbproc = resource.DataForSort._nbOfProcPerNode * resource.DataForSort._nbOfNodes;
62 int min = machines[string(hosts[0])]/nbproc;
63 for(int i=1;i<hosts.length();i++){
64 resource = resList[string(hosts[i])];
65 nbproc = resource.DataForSort._nbOfProcPerNode * resource.DataForSort._nbOfNodes;
66 if( machines[string(hosts[i])]/nbproc < min ){
68 min = machines[string(hosts[i])]/nbproc;
72 return string(hosts[imin]);
75 string SALOME_LoadRateManager::FindBest(const Engines::MachineList& hosts) throw (SALOME_Exception)
77 // for the moment then "maui" will be used for dynamic selection ...
78 MESSAGE("SALOME_LoadRateManager::FindBest " << hosts.length());
79 throw(SALOME_Exception(LOCALIZED("not yet implemented")));