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,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();
51 for(vector<string>::iterator iter = vec.begin();iter!=vec.end();iter++){
52 CORBA::Object_var obj=ns->Resolve((*iter).c_str());
53 Engines::Container_var cont=Engines::Container::_narrow(obj);
54 if(!CORBA::is_nil(cont)){
55 lstCont.push_back((*iter));
58 for(list<string>::iterator iter=lstCont.begin();iter!=lstCont.end();iter++){
59 CORBA::Object_var obj=ns->Resolve((*iter).c_str());
60 Engines::Container_var cont=Engines::Container::_narrow(obj);
61 if(!CORBA::is_nil(cont)){
62 string mach = cont->getHostName();
68 int min = machines[string(hosts[0])];
69 for(int i=1;i<hosts.length();i++){
70 if( machines[string(hosts[i])] < min ){
72 min = machines[string(hosts[i])];
76 return string(hosts[imin]);
79 string SALOME_LoadRateManager::FindBest(const Engines::MachineList& hosts) throw (SALOME_Exception)
81 // for the moment then "maui" will be used for dynamic selection ...
82 MESSAGE("SALOME_LoadRateManager::FindBest " << hosts.length());
83 throw(SALOME_Exception(LOCALIZED("not yet implemented")));