#include <RT_POA.h>


Public Member Functions | |
| CORBA::Object_ptr | create_reference_with_priority (const char *intf, RTCORBA::Priority priority) |
| CORBA::Object_ptr | create_reference_with_id_and_priority (const PortableServer::ObjectId &oid, const char *intf, RTCORBA::Priority priority) |
| PortableServer::ObjectId * | activate_object_with_priority (PortableServer::Servant p_servant, RTCORBA::Priority priority) |
| void | activate_object_with_id_and_priority (const PortableServer::ObjectId &oid, PortableServer::Servant p_servant, RTCORBA::Priority priority) |
| PortableServer::POA_ptr | create_POA (const char *adapter_name, PortableServer::POAManager_ptr poa_manager, const CORBA::PolicyList &policies) |
| PortableServer::POA_ptr | find_POA (const char *adapter_name, CORBA::Boolean activate_it) |
| void | destroy (CORBA::Boolean etherealize_objects, CORBA::Boolean wait_for_completion) |
| PortableServer::ThreadPolicy_ptr | create_thread_policy (PortableServer::ThreadPolicyValue value) |
| PortableServer::LifespanPolicy_ptr | create_lifespan_policy (PortableServer::LifespanPolicyValue value) |
| PortableServer::IdUniquenessPolicy_ptr | create_id_uniqueness_policy (PortableServer::IdUniquenessPolicyValue value) |
| PortableServer::IdAssignmentPolicy_ptr | create_id_assignment_policy (PortableServer::IdAssignmentPolicyValue value) |
| PortableServer::ImplicitActivationPolicy_ptr | create_implicit_activation_policy (PortableServer::ImplicitActivationPolicyValue value) |
| PortableServer::ServantRetentionPolicy_ptr | create_servant_retention_policy (PortableServer::ServantRetentionPolicyValue value) |
| PortableServer::RequestProcessingPolicy_ptr | create_request_processing_policy (PortableServer::RequestProcessingPolicyValue value) |
| char * | the_name (void) |
| PortableServer::POA_ptr | the_parent (void) |
| PortableServer::POAList * | the_children (void) |
| PortableServer::POAManager_ptr | the_POAManager (void) |
| PortableServer::AdapterActivator_ptr | the_activator (void) |
| void | the_activator (PortableServer::AdapterActivator_ptr adapter_activator) |
| PortableServer::ServantManager_ptr | get_servant_manager (void) |
| void | set_servant_manager (PortableServer::ServantManager_ptr imgr) |
| PortableServer::Servant | get_servant (void) |
| void | set_servant (PortableServer::Servant servant) |
| PortableServer::ObjectId * | activate_object (PortableServer::Servant p_servant) |
| void | activate_object_with_id (const PortableServer::ObjectId &id, PortableServer::Servant p_servant) |
| void | deactivate_object (const PortableServer::ObjectId &oid) |
| CORBA::Object_ptr | create_reference (const char *intf) |
| CORBA::Object_ptr | create_reference_with_id (const PortableServer::ObjectId &oid, const char *intf) |
| PortableServer::ObjectId * | servant_to_id (PortableServer::Servant p_servant) |
| CORBA::Object_ptr | servant_to_reference (PortableServer::Servant p_servant) |
| PortableServer::Servant | reference_to_servant (CORBA::Object_ptr reference) |
| PortableServer::ObjectId * | reference_to_id (CORBA::Object_ptr reference) |
| PortableServer::Servant | id_to_servant (const PortableServer::ObjectId &oid) |
| CORBA::Object_ptr | id_to_reference (const PortableServer::ObjectId &oid) |
| CORBA::OctetSeq * | id (void) |
| virtual CORBA::PolicyList * | client_exposed_policies (CORBA::Short object_priority) |
| TAO_RT_POA (const String &name, PortableServer::POAManager_ptr poa_manager, const TAO_POA_Policy_Set &policies, TAO_Root_POA *parent, ACE_Lock &lock, TAO_SYNCH_MUTEX &thread_lock, TAO_ORB_Core &orb_core, TAO_Object_Adapter *object_adapter) | |
| virtual | ~TAO_RT_POA (void) |
| void * | thread_pool (void) const |
Protected Member Functions | |
| virtual TAO_Root_POA * | new_POA (const String &name, PortableServer::POAManager_ptr poa_manager, const TAO_POA_Policy_Set &policies, TAO_Root_POA *parent, ACE_Lock &lock, TAO_SYNCH_MUTEX &thread_lock, TAO_ORB_Core &orb_core, TAO_Object_Adapter *object_adapter) |
| Template method for creating new POA's of this type. | |
| virtual TAO_Stub * | key_to_stub_i (const TAO::ObjectKey &key, const char *type_id, CORBA::Short priority) |
| Like key_to_stub() but assume that the ORB is not shutting down. | |
| void | validate_priority (RTCORBA::Priority priority) |
| void | validate_policies (void) |
| void | parse_rt_policies (TAO_POA_Policy_Set &policies) |
| size_t | endpoint_count (void) |
| TAO_Stub * | create_stub_object (const TAO::ObjectKey &object_key, const char *type_id, CORBA::PolicyList *policy_list, TAO_Acceptor_Filter *filter, TAO_PriorityBandedConnectionPolicy *priority_bands) |
| int | lane_required (TAO_Thread_Lane *lane, TAO_PriorityBandedConnectionPolicy *priority_bands) |
Protected Attributes | |
| TAO_Thread_Pool * | thread_pool_ |
Definition at line 48 of file RT_POA.h.
| TAO_RT_POA::TAO_RT_POA | ( | const String & | name, | |
| PortableServer::POAManager_ptr | poa_manager, | |||
| const TAO_POA_Policy_Set & | policies, | |||
| TAO_Root_POA * | parent, | |||
| ACE_Lock & | lock, | |||
| TAO_SYNCH_MUTEX & | thread_lock, | |||
| TAO_ORB_Core & | orb_core, | |||
| TAO_Object_Adapter * | object_adapter | |||
| ) |
Definition at line 39 of file RT_POA.cpp.
: TAO_Regular_POA (name, poa_manager, policies, parent, lock, thread_lock, orb_core, object_adapter), thread_pool_ (0) { // Parse the RT policies and update our policy cache. this->parse_rt_policies (this->policies ()); }
| TAO_RT_POA::~TAO_RT_POA | ( | void | ) | [virtual] |
Definition at line 62 of file RT_POA.cpp.
{
}
| PortableServer::ObjectId * TAO_RT_POA::activate_object | ( | PortableServer::Servant | p_servant | ) |
Reimplemented from TAO_Root_POA.
Definition at line 641 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::activate_object (p_servant);
}
| void TAO_RT_POA::activate_object_with_id | ( | const PortableServer::ObjectId & | id, | |
| PortableServer::Servant | p_servant | |||
| ) |
Reimplemented from TAO_Root_POA.
Definition at line 648 of file RT_POA.cpp.
{
this->TAO_Regular_POA::activate_object_with_id (id, p_servant);
}
| void TAO_RT_POA::activate_object_with_id_and_priority | ( | const PortableServer::ObjectId & | oid, | |
| PortableServer::Servant | p_servant, | |||
| RTCORBA::Priority | priority | |||
| ) |
Definition at line 75 of file RT_POA.inl.
{
// Check that this method can be used based on this POA's policies.
this->validate_policies ();
this->validate_priority (priority);
while (true)
{
bool wait_occurred_restart_call = false;
// Lock access for the duration of this transaction.
TAO_POA_GUARD;
this->activate_object_with_id_i (oid,
servant,
priority,
wait_occurred_restart_call);
// If we ended up waiting on a condition variable, the POA state
// may have changed while we are waiting. Therefore, we need to
// restart this call.
if (wait_occurred_restart_call)
continue;
else
return;
}
}
| PortableServer::ObjectId * TAO_RT_POA::activate_object_with_priority | ( | PortableServer::Servant | p_servant, | |
| RTCORBA::Priority | priority | |||
| ) |
Definition at line 45 of file RT_POA.inl.
{
// Check that this method can be used based on this POA's policies.
this->validate_policies ();
this->validate_priority (priority);
while (true)
{
bool wait_occurred_restart_call = false;
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (0);
PortableServer::ObjectId *result =
this->activate_object_i (servant, priority, wait_occurred_restart_call);
// If we ended up waiting on a condition variable, the POA state
// may have changed while we are waiting. Therefore, we need to
// restart this call.
if (wait_occurred_restart_call)
continue;
else
return result;
}
}
| CORBA::PolicyList * TAO_RT_POA::client_exposed_policies | ( | CORBA::Short | object_priority | ) | [virtual] |
This method gives the policies that are exposed to the client. These policies are shipped within the IOR.
Reimplemented from TAO_Root_POA.
Definition at line 441 of file RT_POA.cpp.
{
CORBA::PolicyList *client_exposed_policies = 0;
ACE_NEW_THROW_EX (client_exposed_policies,
CORBA::PolicyList (),
CORBA::NO_MEMORY (TAO::VMCID,
CORBA::COMPLETED_NO));
CORBA::PolicyList_var safe_client_exposed_policies = client_exposed_policies;
// Add in all of the client exposed policies.
this->policies_.add_client_exposed_fixed_policies (client_exposed_policies);
// Check if the priority model policy has been set, and if so, let
// the client know about it.
CORBA::Short poa_priority =
this->cached_policies_.server_priority ();
if (poa_priority != TAO_INVALID_PRIORITY)
{
TAO::Portable_Server::Cached_Policies::PriorityModel priority_model =
this->cached_policies_.priority_model ();
// If the priority model is client propagated, let the client
// about the default server priority (the POA priority). If
// the priority model is server declared, tell the client the
// servant's priority.
CORBA::Short priority;
if (priority_model == TAO::Portable_Server::Cached_Policies::CLIENT_PROPAGATED)
priority = poa_priority;
else
priority = object_priority;
const CORBA::ULong current_length =
client_exposed_policies->length ();
client_exposed_policies->length (current_length + 1);
TAO_PriorityModelPolicy *priority_model_policy;
ACE_NEW_THROW_EX (priority_model_policy,
TAO_PriorityModelPolicy (RTCORBA::PriorityModel (priority_model),
priority),
CORBA::NO_MEMORY (TAO::VMCID,
CORBA::COMPLETED_NO));
(*client_exposed_policies)[current_length] = priority_model_policy;
}
return safe_client_exposed_policies._retn ();
}
| PortableServer::IdAssignmentPolicy_ptr TAO_RT_POA::create_id_assignment_policy | ( | PortableServer::IdAssignmentPolicyValue | value | ) |
Reimplemented from TAO_Root_POA.
Definition at line 543 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_id_assignment_policy (value);
}
| PortableServer::IdUniquenessPolicy_ptr TAO_RT_POA::create_id_uniqueness_policy | ( | PortableServer::IdUniquenessPolicyValue | value | ) |
Reimplemented from TAO_Root_POA.
Definition at line 535 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_id_uniqueness_policy (value);
}
| PortableServer::ImplicitActivationPolicy_ptr TAO_RT_POA::create_implicit_activation_policy | ( | PortableServer::ImplicitActivationPolicyValue | value | ) |
Reimplemented from TAO_Root_POA.
Definition at line 552 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_implicit_activation_policy (value);
}
| PortableServer::LifespanPolicy_ptr TAO_RT_POA::create_lifespan_policy | ( | PortableServer::LifespanPolicyValue | value | ) |
Reimplemented from TAO_Root_POA.
Definition at line 527 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_lifespan_policy (value);
}
| PortableServer::POA_ptr TAO_RT_POA::create_POA | ( | const char * | adapter_name, | |
| PortableServer::POAManager_ptr | poa_manager, | |||
| const CORBA::PolicyList & | policies | |||
| ) |
Reimplemented from TAO_Root_POA.
Definition at line 494 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_POA (adapter_name, poa_manager, policies);
}
| CORBA::Object_ptr TAO_RT_POA::create_reference | ( | const char * | intf | ) |
Reimplemented from TAO_Root_POA.
Definition at line 662 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_reference (intf);
}
| CORBA::Object_ptr TAO_RT_POA::create_reference_with_id | ( | const PortableServer::ObjectId & | oid, | |
| const char * | intf | |||
| ) |
Reimplemented from TAO_Root_POA.
Definition at line 669 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_reference_with_id (oid, intf);
}
| CORBA::Object_ptr TAO_RT_POA::create_reference_with_id_and_priority | ( | const PortableServer::ObjectId & | oid, | |
| const char * | intf, | |||
| RTCORBA::Priority | priority | |||
| ) |
Definition at line 28 of file RT_POA.inl.
{
// Check that this method can be used based on this POA's policies.
this->validate_policies ();
this->validate_priority (priority);
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (0);
return this->create_reference_with_id_i (oid, intf, priority);
}
| CORBA::Object_ptr TAO_RT_POA::create_reference_with_priority | ( | const char * | intf, | |
| RTCORBA::Priority | priority | |||
| ) |
Definition at line 12 of file RT_POA.inl.
{
// Check that this method can be used based on this POA's policies.
this->validate_policies ();
this->validate_priority (priority);
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (0);
return this->create_reference_i (intf, priority);
}
| PortableServer::RequestProcessingPolicy_ptr TAO_RT_POA::create_request_processing_policy | ( | PortableServer::RequestProcessingPolicyValue | value | ) |
Reimplemented from TAO_Root_POA.
Definition at line 567 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_request_processing_policy (value);
}
| PortableServer::ServantRetentionPolicy_ptr TAO_RT_POA::create_servant_retention_policy | ( | PortableServer::ServantRetentionPolicyValue | value | ) |
Reimplemented from TAO_Root_POA.
Definition at line 559 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_servant_retention_policy (value);
}
| TAO_Stub * TAO_RT_POA::create_stub_object | ( | const TAO::ObjectKey & | object_key, | |
| const char * | type_id, | |||
| CORBA::PolicyList * | policy_list, | |||
| TAO_Acceptor_Filter * | filter, | |||
| TAO_PriorityBandedConnectionPolicy * | priority_bands | |||
| ) | [protected] |
Definition at line 325 of file RT_POA.cpp.
{
bool error = false;
// Count the number of endpoints.
size_t const profile_count = this->endpoint_count ();
// Create a profile container and have acceptor registries populate
// it with profiles as appropriate.
TAO_MProfile mprofile (0);
// Allocate space for storing the profiles. There can never be more
// profiles than there are endpoints. In some cases, there can be
// less profiles than endpoints.
int result =
mprofile.set (static_cast <CORBA::ULong> (profile_count));
if (result == -1)
error = true;
TAO_Thread_Lane **lanes =
this->thread_pool_->lanes ();
// Leave it to the filter to decide which acceptors/in which order
// go into the mprofile.
for (CORBA::ULong i = 0;
i != this->thread_pool_->number_of_lanes () &&
!error;
++i)
{
if (this->lane_required (lanes[i],
priority_bands))
{
TAO_Acceptor_Registry &acceptor_registry =
lanes[i]->resources ().acceptor_registry ();
result =
filter->fill_profile (object_key,
mprofile,
acceptor_registry.begin (),
acceptor_registry.end (),
lanes[i]->lane_priority ());
if (result == -1)
error = true;
}
}
if (!error)
result = filter->encode_endpoints (mprofile);
if (result == -1)
error = 1;
if (error)
throw ::CORBA::INTERNAL (
CORBA::SystemException::_tao_minor_code (
TAO_MPROFILE_CREATION_ERROR,
0),
CORBA::COMPLETED_NO);
// Make sure we have at least one profile. <mp> may end up being
// empty if none of the acceptor endpoints have the right priority
// for this object, for example.
if (mprofile.profile_count () == 0)
throw ::CORBA::BAD_PARAM (
CORBA::SystemException::_tao_minor_code (
TAO_MPROFILE_CREATION_ERROR,
0),
CORBA::COMPLETED_NO);
return
this->orb_core_.create_stub_object (mprofile, type_id, policy_list);
}
| PortableServer::ThreadPolicy_ptr TAO_RT_POA::create_thread_policy | ( | PortableServer::ThreadPolicyValue | value | ) |
Reimplemented from TAO_Root_POA.
Definition at line 518 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::create_thread_policy (value);
}
| void TAO_RT_POA::deactivate_object | ( | const PortableServer::ObjectId & | oid | ) |
Reimplemented from TAO_Root_POA.
Definition at line 656 of file RT_POA.cpp.
{
this->TAO_Regular_POA::deactivate_object (oid);
}
| void TAO_RT_POA::destroy | ( | CORBA::Boolean | etherealize_objects, | |
| CORBA::Boolean | wait_for_completion | |||
| ) |
Reimplemented from TAO_Root_POA.
Definition at line 508 of file RT_POA.cpp.
{
this->TAO_Regular_POA::destroy (etherealize_objects, wait_for_completion);
}
| size_t TAO_RT_POA::endpoint_count | ( | void | ) | [protected] |
Definition at line 402 of file RT_POA.cpp.
{
size_t profile_count = 0;
TAO_Thread_Lane **lanes =
this->thread_pool_->lanes ();
for (CORBA::ULong i = 0;
i != this->thread_pool_->number_of_lanes ();
++i)
profile_count +=
lanes[i]->resources ().acceptor_registry ().endpoint_count ();
return profile_count;
}
| PortableServer::POA_ptr TAO_RT_POA::find_POA | ( | const char * | adapter_name, | |
| CORBA::Boolean | activate_it | |||
| ) |
Reimplemented from TAO_Root_POA.
Definition at line 502 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::find_POA (adapter_name, activate_it);
}
| PortableServer::Servant TAO_RT_POA::get_servant | ( | void | ) |
Reimplemented from TAO_Root_POA.
Definition at line 627 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::get_servant ();
}
| PortableServer::ServantManager_ptr TAO_RT_POA::get_servant_manager | ( | void | ) |
Reimplemented from TAO_Root_POA.
Definition at line 615 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::get_servant_manager ();
}
| CORBA::OctetSeq * TAO_RT_POA::id | ( | void | ) |
Reimplemented from TAO_Root_POA.
Definition at line 713 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::id ();
}
| CORBA::Object_ptr TAO_RT_POA::id_to_reference | ( | const PortableServer::ObjectId & | oid | ) |
Reimplemented from TAO_Root_POA.
Definition at line 707 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::id_to_reference (oid);
}
| PortableServer::Servant TAO_RT_POA::id_to_servant | ( | const PortableServer::ObjectId & | oid | ) |
Reimplemented from TAO_Root_POA.
Definition at line 701 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::id_to_servant (oid);
}
| TAO_Stub * TAO_RT_POA::key_to_stub_i | ( | const TAO::ObjectKey & | key, | |
| const char * | type_id, | |||
| CORBA::Short | priority | |||
| ) | [protected, virtual] |
Like key_to_stub() but assume that the ORB is not shutting down.
Reimplemented from TAO_Root_POA.
Definition at line 222 of file RT_POA.cpp.
{
// Client exposed policies.
CORBA::PolicyList_var client_exposed_policies =
this->client_exposed_policies (priority);
// Server protocol policy.
CORBA::Policy_var protocol =
this->policies ().get_cached_policy (TAO_CACHED_POLICY_RT_SERVER_PROTOCOL);
RTCORBA::ServerProtocolPolicy_var server_protocol_policy =
RTCORBA::ServerProtocolPolicy::_narrow (protocol.in ());
TAO_ServerProtocolPolicy *server_protocol =
dynamic_cast <TAO_ServerProtocolPolicy *> (server_protocol_policy.in ());
// Filter for server protocol.
TAO_Server_Protocol_Acceptor_Filter filter (server_protocol->protocols_rep ());
// If this POA is using the default thread pool or a thread pool
// without lanes, create the IOR with the acceptors in the thread
// pool.
if (this->thread_pool_ == 0 ||
!this->thread_pool_->with_lanes ())
{
TAO_Acceptor_Registry *acceptor_registry = 0;
if (this->thread_pool_ == 0)
{
TAO_Thread_Lane_Resources_Manager &thread_lane_resources_manager =
this->orb_core_.thread_lane_resources_manager ();
TAO_Thread_Lane_Resources &resources =
thread_lane_resources_manager.default_lane_resources ();
acceptor_registry = &resources.acceptor_registry ();
}
else
{
TAO_Thread_Lane **lanes = this->thread_pool_->lanes ();
TAO_Thread_Lane_Resources &resources = lanes[0]->resources ();
acceptor_registry = &resources.acceptor_registry ();
}
return
this->TAO_Regular_POA::create_stub_object (object_key,
type_id,
client_exposed_policies._retn (),
&filter,
*acceptor_registry);
}
// If this POA has the SERVER_DECLARED policy, create the IOR with
// the acceptors in the only thread lane that matches the priority
// of the object.
if (this->cached_policies_.priority_model () ==
TAO::Portable_Server::Cached_Policies::SERVER_DECLARED)
{
TAO_Thread_Lane **lanes =
this->thread_pool_->lanes ();
for (CORBA::ULong i = 0;
i != this->thread_pool_->number_of_lanes ();
++i)
{
if (lanes[i]->lane_priority () == priority)
return this->TAO_Regular_POA::create_stub_object (object_key,
type_id,
client_exposed_policies._retn (),
&filter,
lanes[i]->resources ().acceptor_registry ()
);
}
ACE_ASSERT (0);
}
// If this POA has the CLIENT_PROPAGATED policy, create the IOR with
// the acceptors in the thread lanes that matches the bands in this
// POA. If there are no bands, all the thread lanes are used.
CORBA::Policy_var bands =
this->policies ().get_cached_policy (
TAO_CACHED_POLICY_RT_PRIORITY_BANDED_CONNECTION
);
RTCORBA::PriorityBandedConnectionPolicy_var priority_bands
= RTCORBA::PriorityBandedConnectionPolicy::_narrow (bands.in ());
TAO_PriorityBandedConnectionPolicy *priority_bands_i =
dynamic_cast <TAO_PriorityBandedConnectionPolicy *> (priority_bands.in ());
return this->create_stub_object (object_key,
type_id,
client_exposed_policies._retn (),
&filter,
priority_bands_i);
}
| int TAO_RT_POA::lane_required | ( | TAO_Thread_Lane * | lane, | |
| TAO_PriorityBandedConnectionPolicy * | priority_bands | |||
| ) | [protected] |
Definition at line 419 of file RT_POA.cpp.
{
if (priority_bands == 0)
return 1;
RTCORBA::PriorityBands &bands =
priority_bands->priority_bands_rep ();
for (CORBA::ULong i = 0;
i < bands.length ();
++i)
{
if (bands[i].low <= lane->lane_priority () &&
bands[i].high >= lane->lane_priority ())
return 1;
}
return 0;
}
| TAO_Root_POA * TAO_RT_POA::new_POA | ( | const String & | name, | |
| PortableServer::POAManager_ptr | poa_manager, | |||
| const TAO_POA_Policy_Set & | policies, | |||
| TAO_Root_POA * | parent, | |||
| ACE_Lock & | lock, | |||
| TAO_SYNCH_MUTEX & | thread_lock, | |||
| TAO_ORB_Core & | orb_core, | |||
| TAO_Object_Adapter * | object_adapter | |||
| ) | [protected, virtual] |
Template method for creating new POA's of this type.
Reimplemented from TAO_Root_POA.
Definition at line 67 of file RT_POA.cpp.
{
TAO_RT_POA *poa = 0;
ACE_NEW_THROW_EX (poa,
TAO_RT_POA (name,
poa_manager,
policies,
parent,
lock,
thread_lock,
orb_core,
object_adapter
),
CORBA::NO_MEMORY ());
return poa;
}
| void TAO_RT_POA::parse_rt_policies | ( | TAO_POA_Policy_Set & | policies | ) | [protected] |
Parse the policy list for RT policies and update our cached policy instance.
Definition at line 94 of file RT_POA.cpp.
{
{
CORBA::Policy_var policy =
policies.get_cached_policy (TAO_CACHED_POLICY_PRIORITY_MODEL);
RTCORBA::PriorityModelPolicy_var priority_model =
RTCORBA::PriorityModelPolicy::_narrow (policy.in ());
if (!CORBA::is_nil (priority_model.in ()))
{
RTCORBA::PriorityModel rt_priority_model =
priority_model->priority_model ();
this->cached_policies_.priority_model (
TAO::Portable_Server::Cached_Policies::PriorityModel (rt_priority_model));
RTCORBA::Priority priority =
priority_model->server_priority ();
this->cached_policies_.server_priority (priority);
}
}
this->thread_pool_ =
TAO_POA_RT_Policy_Validator::extract_thread_pool (this->orb_core_,
policies.policies ());
}
| PortableServer::ObjectId * TAO_RT_POA::reference_to_id | ( | CORBA::Object_ptr | reference | ) |
Reimplemented from TAO_Root_POA.
Definition at line 695 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::reference_to_id (reference);
}
| PortableServer::Servant TAO_RT_POA::reference_to_servant | ( | CORBA::Object_ptr | reference | ) |
Reimplemented from TAO_Root_POA.
Definition at line 689 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::reference_to_servant (reference);
}
| PortableServer::ObjectId * TAO_RT_POA::servant_to_id | ( | PortableServer::Servant | p_servant | ) |
Reimplemented from TAO_Root_POA.
Definition at line 677 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::servant_to_id (p_servant);
}
| CORBA::Object_ptr TAO_RT_POA::servant_to_reference | ( | PortableServer::Servant | p_servant | ) |
Reimplemented from TAO_Root_POA.
Definition at line 683 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::servant_to_reference (p_servant);
}
| void TAO_RT_POA::set_servant | ( | PortableServer::Servant | servant | ) |
Reimplemented from TAO_Root_POA.
Definition at line 633 of file RT_POA.cpp.
{
this->TAO_Regular_POA::set_servant (servant);
}
| void TAO_RT_POA::set_servant_manager | ( | PortableServer::ServantManager_ptr | imgr | ) |
Reimplemented from TAO_Root_POA.
Definition at line 621 of file RT_POA.cpp.
{
this->TAO_Regular_POA::set_servant_manager (imgr);
}
| PortableServer::AdapterActivator_ptr TAO_RT_POA::the_activator | ( | void | ) |
Reimplemented from TAO_Root_POA.
Definition at line 603 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::the_activator ();;
}
| void TAO_RT_POA::the_activator | ( | PortableServer::AdapterActivator_ptr | adapter_activator | ) |
Reimplemented from TAO_Root_POA.
Definition at line 609 of file RT_POA.cpp.
{
this->TAO_Regular_POA::the_activator (adapter_activator);
}
| PortableServer::POAList * TAO_RT_POA::the_children | ( | void | ) |
Reimplemented from TAO_Root_POA.
Definition at line 588 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::the_children ();
}
| char * TAO_RT_POA::the_name | ( | void | ) |
Reimplemented from TAO_Root_POA.
Definition at line 576 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::the_name ();
}
| PortableServer::POA_ptr TAO_RT_POA::the_parent | ( | void | ) |
Reimplemented from TAO_Regular_POA.
Definition at line 582 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::the_parent ();
}
| PortableServer::POAManager_ptr TAO_RT_POA::the_POAManager | ( | void | ) |
Reimplemented from TAO_Root_POA.
Definition at line 594 of file RT_POA.cpp.
{
return this->TAO_Regular_POA::the_POAManager ();
}
| void * TAO_RT_POA::thread_pool | ( | void | ) | const [virtual] |
Reimplemented from TAO_Root_POA.
Definition at line 108 of file RT_POA.inl.
{
return this->thread_pool_;
}
| void TAO_RT_POA::validate_policies | ( | void | ) | [protected] |
Definition at line 192 of file RT_POA.cpp.
{
// For each of the above operations, if the POA supports the
// IMPLICIT_ACTIVATION option for the ImplicitActivationPolicy then
// the ORB shall raise a WrongPolicy user exception. This relieves
// an ORB implementation of the need to retrieve the target object's
// priority from "somewhere" when a request arrives for an inactive
// object.
if (this->cached_policies_.implicit_activation () ==
PortableServer::IMPLICIT_ACTIVATION)
{
throw PortableServer::POA::WrongPolicy ();
}
// For each of the above operations, if the POA does not support the
// SERVER_DECLARED option for the PriorityModelPolicy then the ORB
// shall raise a WrongPolicy user exception.
if (this->cached_policies_.priority_model () !=
TAO::Portable_Server::Cached_Policies::SERVER_DECLARED)
{
throw PortableServer::POA::WrongPolicy ();
}
// In all other respects the semantics of the corresponding
// (i.e. without the name extensions "_with_priority" and
// "_and_priority") PortableServer::POA operations shall be
// observed.
}
| void TAO_RT_POA::validate_priority | ( | RTCORBA::Priority | priority | ) | [protected] |
Definition at line 124 of file RT_POA.cpp.
{
if (priority < RTCORBA::minPriority
// The line below will always be false unless the value of
// RTCORBA::maxPriority, which is now assigned the value of
// 32767, is changed in RTCORBA.pidl.
// || priority > RTCORBA::maxPriority
)
{
throw ::CORBA::BAD_PARAM ();
}
// If this POA is using a thread pool with lanes, make sure the
// priority matches one of the thread lanes. Note that in this
// case, bands do not matter since matching the lanes priority is a
// stricter condition than meeting the band ranges. In addition,
// when the POA was created, the bands had to match the lanes.
if (this->thread_pool_ != 0 && this->thread_pool_->with_lanes ())
{
TAO_Thread_Lane **lanes = this->thread_pool_->lanes ();
for (CORBA::ULong i = 0;
i != this->thread_pool_->number_of_lanes ();
++i)
{
if (lanes[i]->lane_priority () == priority)
return;
}
throw ::CORBA::BAD_PARAM ();
}
else
// Else we are dealing with a thread pool without lanes.
{
// Check if we have bands.
CORBA::Policy_var bands =
this->policies ().get_cached_policy (
TAO_CACHED_POLICY_RT_PRIORITY_BANDED_CONNECTION);
RTCORBA::PriorityBandedConnectionPolicy_var priority_bands
= RTCORBA::PriorityBandedConnectionPolicy::_narrow (bands.in ());
TAO_PriorityBandedConnectionPolicy *priority_bands_i =
dynamic_cast <TAO_PriorityBandedConnectionPolicy *>
(priority_bands.in ());
if (priority_bands_i)
{
// If we do have bands, make sure that the priority is
// matching one of the bands.
RTCORBA::PriorityBands &bands =
priority_bands_i->priority_bands_rep ();
for (CORBA::ULong i = 0;
i < bands.length ();
++i)
{
if (bands[i].low <= priority &&
bands[i].high >= priority)
return;
}
throw ::CORBA::BAD_PARAM ();
}
}
}
TAO_Thread_Pool* TAO_RT_POA::thread_pool_ [protected] |
1.7.0