summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/NodeManager/MonitorController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/DAnCE/NodeManager/MonitorController.cpp')
-rw-r--r--CIAO/DAnCE/NodeManager/MonitorController.cpp235
1 files changed, 0 insertions, 235 deletions
diff --git a/CIAO/DAnCE/NodeManager/MonitorController.cpp b/CIAO/DAnCE/NodeManager/MonitorController.cpp
deleted file mode 100644
index cff6b86df1b..00000000000
--- a/CIAO/DAnCE/NodeManager/MonitorController.cpp
+++ /dev/null
@@ -1,235 +0,0 @@
-// $Id$
-
-//----------------------------------------------------------------------------------
-/**
- * @file MonitorController.cpp
- *
- * @brief The Monitor Controller implementation.
- *
- * This is the facade class for Monitor
- *
- * @author Nilabja Roy <nilabjar@dre.vanderbilt.edu>
- */
-//----------------------------------------------------------------------------------
-
-#include "MonitorController.h"
-#include "BaseMonitor.h"
-#include "MonitorCB.h"
-#include "CIAO_common.h"
-
-#include "ace/Log_Msg.h"
-#include "ace/DLL.h"
-#include "ace/SString.h"
-
-#include "NodeManager_Impl.h"
-
-namespace CIAO
-{
- typedef MonitorBase* (*MonitorFactory) (void);
-
- /// for the CIAO monitor
- const char* monitor_lib_name = "ciaomonlib";
-
- // The interval after which update will be sent.
- // This value will sent by the EM in the later implementation
- const int interval = 10;
-
- static const char* factory_func = "createMonitor";
-}
-
-CIAO::MonitorController::MonitorController (
- ::CORBA::ORB_ptr orb,
- ::Deployment::Domain& domain,
- ::Deployment::TargetManager_ptr target,
- ::CIAO::NodeManager_Impl_Base* node_mgr
- )
- : target_facet_i_ (::Deployment::TargetManager::_duplicate (target)),
- terminate_flag_ (0),
- orb_ (orb),
- initial_domain_ (domain),
- node_mgr_ (node_mgr),
- monitor_cpu_usage_ (0),
- add_component_pid_ (1)
-{
-}
-
-int
-CIAO::MonitorController::svc (void)
-{
- ACE_DLL dll;
-
- // Forming the library name.
- ACE_CString lib_name = ACE_DLL_PREFIX;
- lib_name += monitor_lib_name;
- int retval = dll.open (lib_name.c_str ());
-
- if (retval != 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "%p",
- "dll.open"),
- -1);
- }
-
- // Cast the void* to non-pointer type first - it's not legal to
- // cast a pointer-to-object directly to a pointer-to-function.
- void *void_ptr = dll.symbol (factory_func);
- ptrdiff_t tmp = reinterpret_cast<ptrdiff_t> (void_ptr);
- MonitorFactory factory = reinterpret_cast<MonitorFactory> (tmp);
-
- if (factory == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "%p",
- "dll.symbol"),
- -1);
- }
-
- {
- ACE_TRACE ((LM_DEBUG, "Inside the init call\n"));
-
- // Creating the monitor object.
- monitor_.reset ((MonitorBase*) factory ());
- monitor_->initialize_params (initial_domain_,
- target_facet_i_.in (),
- interval);
-
-
- // Start the Monitor.
- monitor_->start (orb_);
- auto_ptr <CIAO::MonitorCB> monitor_callback (new CIAO::MonitorCB (orb_,
- target_facet_i_.in (),
- interval));
-
- // check if cpu needs to be monitored or not
- for (unsigned int i = 0;i < initial_domain_.node[0].resource.length ();i++)
- {
- if (!strcmp (initial_domain_.node[0].resource[i].name, "Processor"))
- monitor_cpu_usage_ = 1;
- }
-
- // Wait for system to stabilize itself
- ACE_OS::sleep (interval);
-
-
- // The loop in which UpdateData is called
- while (!terminating ())
- {
-
- //ACE_DEBUG ((LM_DEBUG , "=The Terminate is %d\n", terminate_flag_));
-
-
- // if monitoring of cpu is enable , monitor , else dont do
- // anything
- ::Deployment::Domain* domain;
-
- if (monitor_cpu_usage_)
- domain = monitor_->get_current_data ();
- else
- domain = &initial_domain_;
-
-
-
- // ****** add component data *******************
-
- NodeManager_Impl_Base::Component_Ids cids =
- node_mgr_->get_component_detail ();
-
- // Here save the old resource length
- int counter = domain->node[0].resource.length ();
-
- // if pid is already added , dont add
- if (add_component_pid_)
- {
- // then add more resource element to the
- // domain structure
- // ACE_DEBUG ((LM_DEBUG , "Going to add CID/PID data\n"));
- int new_res_size = domain->node[0].resource.length () +
- cids.cid_seq_.size ();
-
- domain->node[0].resource.length (new_res_size);
-
- ACE_Unbounded_Set_Iterator<ACE_CString> iter (cids.cid_seq_);
-
- for (iter = cids.cid_seq_.begin ();
- iter != cids.cid_seq_.end ();
- iter++,counter++)
- {
- domain->node[0].resource[counter].name =
- CORBA::string_dup ("Component");
- domain->node[0].resource[counter].resourceType.length (0);
-
- // Have one property for now
- domain->node[0].resource[counter].property.length (1);
- domain->node[0].resource[counter].property[0].name =
- CORBA::string_dup ((*iter).c_str ());
- domain->node[0].resource[counter].property[0].kind =
- ::Deployment::Quantity;
- domain->node[0].resource[counter].property[0].dynamic =
- 0;
- domain->node[0].resource[counter].property[0].value <<=
- CORBA::Long (cids.process_id_);
-
- // ACE_DEBUG ((LM_DEBUG , "The process id is [%d]\n",
- // CORBA::Long (cids.process_id_)));
- }
- // set the add_component_pid_ to 0
- add_component_pid_ = 0;
- }
-
- //******add compoennt data
-
- monitor_callback->update_data (*domain);
-
- // data will be updated in intervals of 10 secs.
- // in the latest version of spec , this value will
- // come from Execution Manager
- ACE_OS::sleep (interval);
-
- }
-
- monitor_->stop ();
- }
-
- // here delete the monitor object before
- // unloading the library
- monitor_.reset ();
-
- // unload the library
- dll.close ();
-
- if (CIAO::debug_level () > 9)
- {
- ACE_DEBUG ((LM_DEBUG , "CIAO::Monitor::Terminating Monitor\n"));
- }
-
- return 0;
-}
-
-CIAO::MonitorController::~MonitorController ()
-{
- terminate ();
- wait ();
-}
-
-void
-CIAO::MonitorController::terminate ()
-{
- // make the terminate flag false
- ACE_GUARD (ACE_SYNCH_MUTEX,
- guard,
- lock_);
-
- terminate_flag_ = true;
-}
-
-bool
-CIAO::MonitorController::terminating ()
-{
- ACE_GUARD_RETURN (ACE_SYNCH_MUTEX,
- guard,
- lock_,
- 0);
-
- return terminate_flag_;
-}