summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp')
-rw-r--r--CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp470
1 files changed, 0 insertions, 470 deletions
diff --git a/CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp b/CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp
deleted file mode 100644
index 40d58ad24ab..00000000000
--- a/CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp
+++ /dev/null
@@ -1,470 +0,0 @@
-// $Id$
-
-#include "RTConfig_Manager.h"
-#include "ciao/CIAO_common.h"
-#include "ace/SString.h"
-
-#if !defined (__ACE_INLINE__)
-# include "RTConfig_Manager.inl"
-#endif /* __ACE_INLINE__ */
-
-void
-CIAO::RTResource_Config_Manager::init (RTCORBA::RTORB_ptr rtorb)
-{
- this->rtorb_ = RTCORBA::RTORB::_duplicate (rtorb);
-}
-
-void
-CIAO::RTResource_Config_Manager::print_resources
-(const CIAO::DAnCE::ServerResource &server_resource
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- const CIAO::DAnCE::ORBResource &orb_resource
- = server_resource.orb_config.orb_resources[0];
-
- CORBA::ULong i;
-
- // Creating and binding name with RT Threadpool
- for (i = 0; i < orb_resource.threadpool_list.length (); ++i)
- {
- ACE_DEBUG ((LM_DEBUG,
- "-RTResource_Config_Manager::print_resource threadpool: %s\n"
- "\tStack size: %d\n"
- "\tStatic: %d\n"
- "\tDynamic %d\n"
- "\tDefault Prio: %d\n"
- "\tBuffering %s\n"
- "\tMax Buffered: %d\n"
- "\tBuffer Size %d\n",
- orb_resource.threadpool_list[i].Id.in (),
- orb_resource.threadpool_list[i].stacksize,
- orb_resource.threadpool_list[i].static_threads,
- orb_resource.threadpool_list[i].dynamic_threads,
- orb_resource.threadpool_list[i].default_priority,
- (orb_resource.threadpool_list[i].allow_request_buffering ? "Y" : "N"),
- orb_resource.threadpool_list[i].max_buffered_requests,
- orb_resource.threadpool_list[i].max_request_buffer_size));
- }
-
- for (i = 0; i < orb_resource.threadpool_with_lanes_list.length (); ++i)
- {
- ACE_DEBUG ((LM_DEBUG,
- "-RTResource_Config_Manager::print_resource threadpool_with %d, lanes: %s\n",
- orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length (),
- orb_resource.threadpool_with_lanes_list[i].Id.in ()));
-
- for (CORBA::ULong l = 0;
- l < orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length ();
- ++l)
- {
- ACE_DEBUG ((LM_DEBUG,
- "\tLane %d:\n"
- "\t\tPriority: %d\n"
- "\t\tStatic: %d\n"
- "\t\tDynamic: %d\n",
- l,
- orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].lane_priority,
- orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].static_threads,
- orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].dynamic_threads));
- }
- ACE_DEBUG ((LM_DEBUG,
- "\tStack size: %d\n"
- "\tBorrowing: %s\n"
- "\tBuffering %s\n"
- "\tMax Buffered: %d\n"
- "\tBuffer Size %d\n",
- orb_resource.threadpool_with_lanes_list[i].stacksize,
- (orb_resource.threadpool_with_lanes_list[i].allow_borrowing ? "Y" : "N"),
- (orb_resource.threadpool_with_lanes_list[i].allow_request_buffering ? "Y" : "N"),
- orb_resource.threadpool_with_lanes_list[i].max_buffered_requests,
- orb_resource.threadpool_with_lanes_list[i].max_request_buffer_size));
- }
-
- for (i = 0; i < orb_resource.connection_bands_list.length (); ++i)
- {
- ACE_DEBUG ((LM_DEBUG,
- "-RTResource_Config_Manager::print_resource connection %d bands: %s\n",
- orb_resource.connection_bands_list[i].bands.length (),
- orb_resource.connection_bands_list[i].Id.in ()));
-
- for (CORBA::ULong l = 0;
- l < orb_resource.connection_bands_list[i].bands.length ();
- ++l)
- {
- ACE_DEBUG ((LM_DEBUG,
- "\tBand %d Prio: %d -- %d\n",
- l,
- orb_resource.connection_bands_list[i].bands[l].low,
- orb_resource.connection_bands_list[i].bands[l].high));
- }
- }
-}
-
-void
-CIAO::RTResource_Config_Manager::init_resources
-(const CIAO::DAnCE::ServerResource &server_resource
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- ACE_DEBUG ((LM_DEBUG,
- "RTResource_Config_Manager::init_resource.\n"));
-
- if (CORBA::is_nil (this->rtorb_.in()))
- {
- ACE_ERROR ((LM_ERROR,
- "RTResource_Config_Manager has not been properly initialized.\n"));
- ACE_THROW (CORBA::INTERNAL ());
- }
-
- this->print_resources (server_resource);
- // return;
-
- const CIAO::DAnCE::ORBResource &orb_resource
- = server_resource.orb_config.orb_resources[0];
-
- CORBA::ULong i;
-
- // Creating and binding name with RT Threadpool
- for (i = 0; i < orb_resource.threadpool_list.length (); ++i)
- {
- ACE_DEBUG ((LM_DEBUG,
- "RTResource_Config_Manager::init_resource threadpool: %s\n",
- orb_resource.threadpool_list[i].Id.in ()));
- RTCORBA::ThreadpoolId thr_id =
- this->rtorb_->create_threadpool
- (orb_resource.threadpool_list[i].stacksize,
- orb_resource.threadpool_list[i].static_threads,
- orb_resource.threadpool_list[i].dynamic_threads,
- orb_resource.threadpool_list[i].default_priority,
- orb_resource.threadpool_list[i].allow_request_buffering,
- orb_resource.threadpool_list[i].max_buffered_requests,
- orb_resource.threadpool_list[i].max_request_buffer_size
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK; // Simply pass back the exception here
- // for now. We need to have a better way
- // to handle execption here.
- if (this->threadpool_map_.bind (orb_resource.threadpool_list[i].Id.in (),
- thr_id) != 0)
- {
- ACE_ERROR ((LM_ERROR, "Error binding thread pool Id: %s to map when initializing RTNodeApplication resources.\n", orb_resource.threadpool_list[i].Id.in ()));
- ACE_THROW (CORBA::INTERNAL ());
- }
- else
- {
- ACE_DEBUG ((LM_DEBUG,
- "RTResource_Config_Manager::init_resource added thread pool: %s\n",
- orb_resource.threadpool_list[i].Id.in ()));
- }
- }
-
- for (i = 0; i < orb_resource.threadpool_with_lanes_list.length (); ++i)
- {
- ACE_DEBUG ((LM_DEBUG,
- "RTResource_Config_Manager::init_resource threadpool_with %d, lanes: %s\n",
- orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length (),
- orb_resource.threadpool_with_lanes_list[i].Id.in ()));
-
- // Duplicate RTCORBA lanes
- RTCORBA::ThreadpoolLanes lanes
- (orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length ());
- lanes.length (orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length ());
-
- for (CORBA::ULong l = 0;
- l < orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length ();
- ++l)
- {
- lanes[l].lane_priority
- = orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].lane_priority;
- lanes[l].static_threads
- = orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].static_threads;
- lanes[l].dynamic_threads
- = orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].dynamic_threads;
- }
-
- RTCORBA::ThreadpoolId thr_id =
- this->rtorb_->create_threadpool_with_lanes
- (orb_resource.threadpool_with_lanes_list[i].stacksize,
- lanes,
- orb_resource.threadpool_with_lanes_list[i].allow_borrowing,
- orb_resource.threadpool_with_lanes_list[i].allow_request_buffering,
- orb_resource.threadpool_with_lanes_list[i].max_buffered_requests,
- orb_resource.threadpool_with_lanes_list[i].max_request_buffer_size
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK; // Simply pass back the exception here
- // for now. We need to have a better way
- // to handle execption here.
-
- if (this->threadpool_map_.bind (orb_resource.threadpool_with_lanes_list[i].Id.in (),
- thr_id) != 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Error binding thread pool name: %s to map when "
- "initializing RTNodeApplication resources.\n",
- orb_resource.threadpool_with_lanes_list[i].Id.in ()));
- ACE_THROW (CORBA::INTERNAL ());
- }
-
- else
- {
- ACE_DEBUG ((LM_DEBUG,
- "RTResource_Config_Manager::init_resource added thread pool with lanes: %s\n",
- orb_resource.threadpool_with_lanes_list[i].Id.in ()));
- }
- }
-
- for (i = 0; i < orb_resource.connection_bands_list.length (); ++i)
- {
- RTCORBA::PriorityBands
- safebands(orb_resource.connection_bands_list[i].bands.length ());
- safebands.length (orb_resource.connection_bands_list[i].bands.length ());
-
- for (CORBA::ULong l = 0;
- l < orb_resource.connection_bands_list[i].bands.length ();
- ++l)
- {
- safebands[l].low = orb_resource.connection_bands_list[i].bands[l].low;
- safebands[l].high = orb_resource.connection_bands_list[i].bands[l].high;
- }
-
- if (this->priority_bands_map_.bind (orb_resource.connection_bands_list[i].Id.in (),
- safebands) != 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Error binding priority bands name: %s to map "
- "when initializing RTNodeApplication resources.\n",
- orb_resource.connection_bands_list[i].Id.in ()));
- ACE_THROW (CORBA::INTERNAL ());
- }
- else
- {
- ACE_DEBUG ((LM_DEBUG,
- "RTResource_Config_Manager::init_resource added connection bands: %s\n",
- orb_resource.connection_bands_list[i].Id.in ()));
- }
- }
-
- // now initialize the policy set part of it.
- // server_resource.orb_config.policy_set
- const CIAO::DAnCE::PolicySets &sets = server_resource.orb_config.policy_set;
- for (CORBA::ULong i = 0; i < sets.length (); ++i)
- {
- CORBA::ULong np = sets[i].policies.length ();
- if (np == 0)
- continue;
-
- CORBA::PolicyList_var policy_list = new CORBA::PolicyList (np);
- policy_list->length (np);
-
- // Create a list of policies
- for (CORBA::ULong pc = 0; pc < np; ++pc)
- {
- policy_list[pc] = this->create_single_policy (sets[i].policies[pc]
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
- }
-
- // Bind the policy list to the name. The bind operation should
- // surrender the ownership of the newly created PolicyList
- // sequence to the map.
- if (this->policy_map_.bind (sets[i].Id.in (),
- policy_list) != 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Error binding Policy_Set with name: %s\n",
- sets[i].Id.in ()));
- ACE_THROW (CORBA::INTERNAL ());
- }
- else
- {
- ACE_DEBUG ((LM_DEBUG,
- "RTResource_Config_Manager::init_resource added policy set: %s\n",
- sets[i].Id.in ()));
- }
- }
-}
-
-void
-CIAO::RTResource_Config_Manager::fini (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- TP_MAP::ITERATOR iter = this->threadpool_map_.begin ();
- TP_MAP::ITERATOR end = this->threadpool_map_.end ();
-
- for (; iter != end; ++iter)
- {
- this->rtorb_->destroy_threadpool ((*iter).int_id_
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
- }
-
-}
-
-RTCORBA::ThreadpoolId
-CIAO::RTResource_Config_Manager::find_threadpool_by_name (const char *name
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- if (name == 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Invalid name string found in \"find_threadpool_by_name\"\n"));
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
- }
-
-
- RTCORBA::ThreadpoolId ret_id = 0; // return id
-
- if (this->threadpool_map_.find (name, ret_id) != 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Unable to find a threadpool named %s\n",
- name));
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
- }
-
- return ret_id;
-}
-
-RTCORBA::PriorityBands *
-CIAO::RTResource_Config_Manager::find_priority_bands_by_name (const char *name
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- if (name == 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Invalid name string found in \"find_priority_bands_by_name\"\n"));
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
- }
-
- PB_MAP::ENTRY *entry = 0;
-
- if (this->priority_bands_map_.find (name, entry) != 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Unable to find a connection bands named %s\n",
- name));
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
- }
-
- RTCORBA::PriorityBands_var retv = new RTCORBA::PriorityBands;
- (*retv.ptr ()) = (*entry->int_id_.ptr ());
- return retv._retn ();
-}
-
-CORBA::PolicyList *
-CIAO::RTResource_Config_Manager::find_policies_by_name (const char *name
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- if (name == 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Invalid name string found in \"find_policies_by_name\"\n"));
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
- }
-
-
- ACE_DEBUG ((LM_DEBUG, "RTResource_Config_Manager::find_policies_by_name: %s\n",
- name));
-
- POLICY_MAP::ENTRY *entry = 0;
-
- if (this->policy_map_.find (name, entry) != 0)
- {
- ACE_ERROR ((LM_ERROR,
- "Unable to find a PolicyList named %s\n",
- name));
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
- }
-
- // duplicate the sequence PolicyList.
- CORBA::PolicyList_var retv =
- new CORBA::PolicyList (entry->int_id_.in ());
-
- ACE_DEBUG ((LM_DEBUG, "RTResource_Config_Manager::find_policies_by_name ok.\n"));
-
- return retv._retn ();
-}
-
-CORBA::Policy_ptr
-CIAO::RTResource_Config_Manager::create_single_policy
-(const CIAO::DAnCE::PolicyDef &policy_def
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- // if (CIAO::debug_level () > 9)
- ACE_DEBUG ((LM_DEBUG,
- "RTResource_Config_Manager::create_single_policy: %d\n",
- policy_def._d ()));
-
- CORBA::Policy_var retv;
-
- switch (policy_def._d ())
- {
- case RTCORBA::PRIORITY_MODEL_POLICY_TYPE:
- {
- const CIAO::DAnCE::PriorityModelPolicyDef &tmp
- = policy_def.PriorityModelDef ();
-
- retv = this->rtorb_->create_priority_model_policy ((RTCORBA::PriorityModel) tmp.priority_model,
- tmp.server_priority
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK_RETURN (0);
-
- if (! CORBA::is_nil (retv.in ()))
- ACE_DEBUG ((LM_DEBUG,
- "Create PriorityModel policy: %d - %d\n",
- tmp.priority_model, tmp.server_priority));
- }
- break;
-
- case RTCORBA::THREADPOOL_POLICY_TYPE:
- {
- RTCORBA::ThreadpoolId tpid =
- this->find_threadpool_by_name (policy_def.ThreadpoolDef().Id.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK_RETURN (0);
-
- retv = this->rtorb_->create_threadpool_policy (tpid
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK_RETURN (0);
-
- if (! CORBA::is_nil (retv.in ()))
- ACE_DEBUG ((LM_DEBUG,
- "Create Threadpool policy: %s, TPid: %d\n",
- policy_def.ThreadpoolDef().Id.in (), tpid));
- }
- break;
-
- case RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE:
- {
- RTCORBA::PriorityBands_var bands =
- this->find_priority_bands_by_name (policy_def.PriorityBandedConnectionDef().Id.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK_RETURN (0);
-
- retv =
- this->rtorb_->create_priority_banded_connection_policy (bands.in ()
- ACE_ENV_ARG_PARAMETER);
- ACE_CHECK_RETURN (0);
-
- if (! CORBA::is_nil (retv.in ()))
- {
- ACE_DEBUG ((LM_DEBUG,
- "Created Banded Connection policy: %s\n",
- policy_def.PriorityBandedConnectionDef().Id.in ()));
- }
- }
- break;
-
- default:
- ACE_ERROR ((LM_ERROR,
- "Invalid policy type - RTPolicy_Set_Manager::create_single_policy\n"));
- ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
- }
-
- return retv._retn ();
-}
-