summaryrefslogtreecommitdiff
path: root/ACE/TAO/orbsvcs/LoadBalancer/Push_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/TAO/orbsvcs/LoadBalancer/Push_Handler.cpp')
-rw-r--r--ACE/TAO/orbsvcs/LoadBalancer/Push_Handler.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/ACE/TAO/orbsvcs/LoadBalancer/Push_Handler.cpp b/ACE/TAO/orbsvcs/LoadBalancer/Push_Handler.cpp
new file mode 100644
index 00000000000..f63d8e11bc4
--- /dev/null
+++ b/ACE/TAO/orbsvcs/LoadBalancer/Push_Handler.cpp
@@ -0,0 +1,51 @@
+#include "Push_Handler.h"
+
+#include "tao/debug.h"
+
+
+ACE_RCSID (LoadBalancing,
+ Push_Handler,
+ "$Id$")
+
+
+TAO_LB_Push_Handler::TAO_LB_Push_Handler (
+ CosLoadBalancing::LoadMonitor_ptr monitor,
+ const PortableGroup::Location & location,
+ CosLoadBalancing::LoadManager_ptr manager)
+ : monitor_ (CosLoadBalancing::LoadMonitor::_duplicate (monitor)),
+ location_ (location),
+ manager_ (CosLoadBalancing::LoadManager::_duplicate (manager))
+{
+}
+
+int
+TAO_LB_Push_Handler::handle_timeout (
+ const ACE_Time_Value & /* current_time */,
+ const void * /* arg */)
+{
+ try
+ {
+ CosLoadBalancing::LoadList_var loads =
+ this->monitor_->loads ();
+
+// ACE_DEBUG ((LM_DEBUG,
+// "PUSHING LOAD:\n"
+// " id: %u\n"
+// " value: %f\n",
+// loads[0].id,
+// loads[0].value));
+
+ this->manager_->push_loads (this->location_,
+ loads.in ());
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ // Catch the exception and ignore it.
+ // @@ Yah?
+
+ if (TAO_debug_level > 0)
+ ex._tao_print_exception ("(%P|%t) Push_Handler::handle_timeout()\n");
+ }
+
+ return 0;
+}