📄 lb_loadmanager.cpp
字号:
(void) this->monitor_map_.unbind (the_location);
ACE_THROW (CORBA::INTERNAL ());
}
}
else if (result == 1)
{
ACE_THROW (CosLoadBalancing::MonitorAlreadyPresent ());
}
else if (result != 0)
{
if (TAO_debug_level > 0)
ACE_ERROR ((LM_ERROR,
"TAO_LB_LoadManager::register_load_monitor: "
"Unable to register load monitor.\n"));
ACE_THROW (CORBA::INTERNAL ());
}
}
CosLoadBalancing::LoadMonitor_ptr
TAO_LB_LoadManager::get_load_monitor (
const PortableGroup::Location & the_location
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosLoadBalancing::LocationNotFound))
{
ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
guard,
this->monitor_lock_,
CosLoadBalancing::LoadMonitor::_nil ());
TAO_LB_MonitorMap::ENTRY * entry;
if (this->monitor_map_.find (the_location, entry) == 0)
{
return
CosLoadBalancing::LoadMonitor::_duplicate (entry->int_id_.in ());
}
ACE_THROW_RETURN (CosLoadBalancing::LocationNotFound (),
CosLoadBalancing::LoadMonitor::_nil ());
}
void
TAO_LB_LoadManager::remove_load_monitor (
const PortableGroup::Location & the_location
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosLoadBalancing::LocationNotFound))
{
ACE_GUARD (TAO_SYNCH_MUTEX,
guard,
this->monitor_lock_);
if (this->monitor_map_.unbind (the_location) != 0)
ACE_THROW (CosLoadBalancing::LocationNotFound ());
// If no load monitors are registered with the load balancer than
// shutdown the "pull monitoring."
if (this->timer_id_ != -1
&& this->monitor_map_.current_size () == 0)
{
if (this->reactor_->cancel_timer (this->timer_id_) == 0)
{
if (TAO_debug_level > 0)
ACE_ERROR ((LM_ERROR,
"TAO_LB_LoadManager::remove_load_monitor: "
"Unable to cancel timer.\n"));
ACE_THROW (CORBA::INTERNAL ());
}
this->timer_id_ = -1;
}
}
void
TAO_LB_LoadManager::set_default_properties (
const PortableGroup::Properties & props
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty))
{
PortableGroup::Properties new_props (props);
this->preprocess_properties (new_props
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
this->property_manager_.set_default_properties (new_props
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::Properties *
TAO_LB_LoadManager::get_default_properties (
ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return
this->property_manager_.get_default_properties (
ACE_ENV_SINGLE_ARG_PARAMETER);
}
void
TAO_LB_LoadManager::remove_default_properties (
const PortableGroup::Properties & props
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty))
{
this->property_manager_.remove_default_properties (props
ACE_ENV_ARG_PARAMETER);
}
void
TAO_LB_LoadManager::set_type_properties (
const char *type_id,
const PortableGroup::Properties & overrides
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty))
{
PortableGroup::Properties new_overrides (overrides);
this->preprocess_properties (new_overrides
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
this->property_manager_.set_type_properties (type_id,
new_overrides
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::Properties *
TAO_LB_LoadManager::get_type_properties (
const char *type_id
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return
this->property_manager_.get_type_properties (type_id
ACE_ENV_ARG_PARAMETER);
}
void
TAO_LB_LoadManager::remove_type_properties (
const char *type_id,
const PortableGroup::Properties & props
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty))
{
this->property_manager_.remove_type_properties (type_id,
props
ACE_ENV_ARG_PARAMETER);
}
void
TAO_LB_LoadManager::set_properties_dynamically (
PortableGroup::ObjectGroup_ptr object_group,
const PortableGroup::Properties & overrides
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty))
{
PortableGroup::Properties new_overrides (overrides);
this->preprocess_properties (new_overrides
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
this->property_manager_.set_properties_dynamically (object_group,
new_overrides
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::Properties *
TAO_LB_LoadManager::get_properties (
PortableGroup::ObjectGroup_ptr object_group
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound))
{
return
this->property_manager_.get_properties (object_group
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::ObjectGroup_ptr
TAO_LB_LoadManager::create_member (
PortableGroup::ObjectGroup_ptr object_group,
const PortableGroup::Location & the_location,
const char * type_id,
const PortableGroup::Criteria & the_criteria
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound,
PortableGroup::MemberAlreadyPresent,
PortableGroup::NoFactory,
PortableGroup::ObjectNotCreated,
PortableGroup::InvalidCriteria,
PortableGroup::CannotMeetCriteria))
{
return
this->object_group_manager_.create_member (object_group,
the_location,
type_id,
the_criteria
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::ObjectGroup_ptr
TAO_LB_LoadManager::add_member (
PortableGroup::ObjectGroup_ptr object_group,
const PortableGroup::Location & the_location,
CORBA::Object_ptr member
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound,
PortableGroup::MemberAlreadyPresent,
PortableGroup::ObjectNotAdded))
{
return
this->object_group_manager_.add_member (object_group,
the_location,
member
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::ObjectGroup_ptr
TAO_LB_LoadManager::remove_member (
PortableGroup::ObjectGroup_ptr object_group,
const PortableGroup::Location & the_location
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound,
PortableGroup::MemberNotFound))
{
return
this->object_group_manager_.remove_member (object_group,
the_location
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::Locations *
TAO_LB_LoadManager::locations_of_members (
PortableGroup::ObjectGroup_ptr object_group
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound))
{
return
this->object_group_manager_.locations_of_members (object_group
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::ObjectGroups *
TAO_LB_LoadManager::groups_at_location (
const PortableGroup::Location & the_location
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return
this->object_group_manager_.groups_at_location (the_location
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::ObjectGroupId
TAO_LB_LoadManager::get_object_group_id (
PortableGroup::ObjectGroup_ptr object_group
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound))
{
return
this->object_group_manager_.get_object_group_id (object_group
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::ObjectGroup_ptr
TAO_LB_LoadManager::get_object_group_ref (
PortableGroup::ObjectGroup_ptr object_group
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound))
{
return
this->object_group_manager_.get_object_group_ref (object_group
ACE_ENV_ARG_PARAMETER);
}
PortableGroup::ObjectGroup_ptr TAO_LB_LoadManager::get_object_group_ref_from_id (
PortableGroup::ObjectGroupId group_id
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC((
CORBA::SystemException,
PortableGroup::ObjectGroupNotFound))
{
return this->object_group_manager_.get_object_group_ref_from_id (
group_id
ACE_ENV_ARG_PARAMETER);
}
CORBA::Object_ptr
TAO_LB_LoadManager::get_member_ref (
PortableGroup::ObjectGroup_ptr object_group,
const PortableGroup::Location & the_location
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::ObjectGroupNotFound,
PortableGroup::MemberNotFound))
{
return
this->object_group_manager_.get_member_ref (object_group,
the_location
ACE_ENV_ARG_PARAMETER);
}
CORBA::Object_ptr
TAO_LB_LoadManager::create_object (
const char * type_id,
const PortableGroup::Criteria & the_criteria,
PortableGroup::GenericFactory::FactoryCreationId_out
factory_creation_id
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::NoFactory,
PortableGroup::ObjectNotCreated,
PortableGroup::InvalidCriteria,
PortableGroup::InvalidProperty,
PortableGroup::CannotMeetCriteria))
{
// this->init (ACE_ENV_SINGLE_ARG_PARAMETER);
// ACE_CHECK_RETURN (CORBA::Object::_nil ());
PortableGroup::Criteria new_criteria (the_criteria);
this->preprocess_properties (new_criteria
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
CORBA::Object_ptr obj =
this->generic_factory_.create_object (type_id,
new_criteria,
factory_creation_id
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::Object::_nil ());
return obj;
}
#if 0
void
TAO_LB_LoadManager::process_criteria (
const PortableGroup::Criteria & the_criteria
ACE_ENV_ARG_DECL)
{
// List of invalid criteria. If this list has a length greater than
// zero, then the PortableGroup::InvalidCriteria exception will
// be thrown.
PortableGroup::Criteria invalid_criteria;
int found_factory = 0; // If factory was found in the_criteria, then
// set to 1.
// Parse the criteria.
CORBA::ULong criteria_count = the_criteria.length ();
for (CORBA::ULong i = 0; i < criteria_size; ++i)
{
CORBA::UShort initial_number_replicas = 0;
PortableGroup::FactoryInfos factory_infos;
// Obtain the InitialNumberMembers from the_criteria.
if (this->get_initial_number_replicas (type_id,
the_criteria[i],
initial_number_replicas) != 0)
{
CORBA::ULong len = invalid_criteria.length ();
invalid_criteria.length (len + 1);
invalid_criteria[len] = the_criteria[i];
}
// Obtain the FactoryInfos from the_criteria. This method also
// ensures that GenericFactories at different locations are used.
else if (this->get_factory_infos (type_id,
the_criteria[i],
factory_infos) == 0)
found_factory = 1;
// Unknown property
else
ACE_THROW (PortableGroup::InvalidProperty (the_criteria[i].nam,
the_criteria[i].val));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -