-/* $Id: filter_load_balance.cpp,v 1.4 2007-01-04 13:03:17 marc Exp $
- Copyright (c) 2005-2006, Index Data.
+/* This file is part of Metaproxy.
+ Copyright (C) 2005-2008 Index Data
- See the LICENSE file for details
- */
+Metaproxy is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+Metaproxy is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
#include "config.hpp"
#include "session.hpp"
#include "filter_load_balance.hpp"
#include "util.hpp"
+
#include <boost/thread/mutex.hpp>
-#include <boost/date_time/posix_time/posix_time.hpp>
#include <yaz/zgdu.h>
-#include <iostream>
+// remove max macro if already defined (defined later in <limits>)
+#ifdef max
+#undef max
+#endif
+
+//#include <iostream>
#include <list>
#include <map>
#include <limits>
unsigned int deads;
unsigned int cost() {
unsigned int c = sessions + packages + deads;
- std::cout << "stats c:" << c
- << " s:" << sessions
- << " p:" << packages
- << " d:" << deads
- <<"\n";
+ //std::cout << "stats c:" << c
+ // << " s:" << sessions
+ // << " p:" << packages
+ // << " d:" << deads
+ // <<"\n";
return c;
}
};
{ // must have a destructor because of boost::scoped_ptr
}
-void yf::LoadBalance::configure(const xmlNode *xmlnode)
+void yf::LoadBalance::configure(const xmlNode *xmlnode, bool test_only)
{
m_p->configure(xmlnode);
}
// copying new target into init package
mp::util::set_vhost_otherinfo(&(org_init->otherInfo),
- odr_en, target);
+ odr_en, target, 1);
package.request() = gdu_req;
}
}
}
-// getting timestamp for receiving of package
-//boost::posix_time::ptime receive_time
-// = boost::posix_time::microsec_clock::local_time();
-// //<< receive_time << " "
-// //<< to_iso_string(receive_time) << " "
-//<< to_iso_extended_string(receive_time) << " "
-
-
// statistic manipulating functions,
void yf::LoadBalance::Impl::add_dead(unsigned long session_id){
if (itarg != m_target_stat.end()
&& itarg->second.deads < std::numeric_limits<unsigned int>::max()){
itarg->second.deads += 1;
- std::cout << "add_dead " << session_id << " " << target
- << " d:" << itarg->second.deads << "\n";
+ // std:.cout << "add_dead " << session_id << " " << target
+ // << " d:" << itarg->second.deads << "\n";
}
}
};
&& itarg->second.packages
< std::numeric_limits<unsigned int>::max()){
itarg->second.packages += 1;
- std::cout << "add_package " << session_id << " " << target
- << " p:" << itarg->second.packages << "\n";
+ // std:.cout << "add_package " << session_id << " " << target
+ // << " p:" << itarg->second.packages << "\n";
}
}
};
if (itarg != m_target_stat.end()
&& itarg->second.packages > 0){
itarg->second.packages -= 1;
- std::cout << "remove_package " << session_id << " " << target
- << " p:" << itarg->second.packages << "\n";
+ // std:.cout << "remove_package " << session_id << " " << target
+ // << " p:" << itarg->second.packages << "\n";
}
}
};
stat.packages = 0; // no idea why the defaut constructor TargetStat()
stat.deads = 0; // is not initializig this correctly to zero ??
m_target_stat.insert(std::make_pair(target, stat));
- std::cout << "add_session " << session_id << " " << target
- << " s:1\n";
+ // std:.cout << "add_session " << session_id << " " << target
+ // << " s:1\n";
}
else if (itarg->second.sessions < std::numeric_limits<unsigned int>::max())
{
itarg->second.sessions += 1;
- std::cout << "add_session " << session_id << " " << target
- << " s:" << itarg->second.sessions << "\n";
+ // std:.cout << "add_session " << session_id << " " << target
+ // << " s:" << itarg->second.sessions << "\n";
}
};
if (itarg->second.sessions > 0)
itarg->second.sessions -= 1;
- std::cout << "remove_session " << session_id << " " << target
- << " s:" << itarg->second.sessions << "\n";
+ // std:.cout << "remove_session " << session_id << " " << target
+ // << " s:" << itarg->second.sessions << "\n";
// clearing empty sessions and targets
if (itarg->second.sessions == 0 && itarg->second.deads == 0 ){