#include <ZIOP_Stub.h>
Public Member Functions | |
TAO_ZIOP_Stub (const char *repository_id, const TAO_MProfile &profiles, TAO_ORB_Core *orb_core) | |
virtual | ~TAO_ZIOP_Stub (void) |
CORBA::Policy_ptr | get_policy (CORBA::PolicyType type) |
CORBA::Policy_ptr | get_cached_policy (TAO_Cached_Policy_Type type) |
Private Member Functions | |
void | parse_policies (void) |
Helper method used to parse the policies. | |
void | exposed_compression_enabling_policy (CORBA::Policy_ptr policy) |
void | exposed_compression_id_list_policy (CORBA::Policy_ptr policy) |
CORBA::Policy_ptr | exposed_compression_enabling_policy (void) |
CORBA::Policy_ptr | exposed_compression_id_list_policy (void) |
CORBA::Policy * | effective_compression_enabling_policy (void) |
CORBA::Policy * | effective_compression_id_list_policy (void) |
TAO_ZIOP_Stub (const TAO_ZIOP_Stub &) | |
TAO_ZIOP_Stub & | operator= (const TAO_ZIOP_Stub &) |
Private Attributes | |
CORBA::Policy_var | compression_enabling_policy_ |
CORBA::Policy_var | compression_id_list_policy_ |
CORBA::Boolean | are_policies_parsed_ |
This class represent a stub with extended functionality, which are needed for ZIOPCORBA.
Definition at line 47 of file ZIOP_Stub.h.
TAO_ZIOP_Stub::TAO_ZIOP_Stub | ( | const char * | repository_id, | |
const TAO_MProfile & | profiles, | |||
TAO_ORB_Core * | orb_core | |||
) |
Definition at line 20 of file ZIOP_Stub.cpp.
: TAO_Stub (repository_id, profiles, orb_core), are_policies_parsed_ (false) { }
TAO_ZIOP_Stub::~TAO_ZIOP_Stub | ( | void | ) | [virtual] |
Definition at line 30 of file ZIOP_Stub.cpp.
{ if (!CORBA::is_nil (this->compression_enabling_policy_.in ())) this->compression_enabling_policy_->destroy (); if (!CORBA::is_nil (this->compression_id_list_policy_.in ())) this->compression_id_list_policy_->destroy (); }
TAO_ZIOP_Stub::TAO_ZIOP_Stub | ( | const TAO_ZIOP_Stub & | ) | [private] |
CORBA::Policy * TAO_ZIOP_Stub::effective_compression_enabling_policy | ( | void | ) | [private] |
Definition at line 146 of file ZIOP_Stub.cpp.
{ // Get effective override. CORBA::Policy_var override = this->TAO_Stub::get_cached_policy ( TAO_CACHED_COMPRESSION_ENABLING_POLICY); // Get the value from the ior. CORBA::Policy_var exposed = this->exposed_compression_enabling_policy (); // Reconcile client-exposed and locally set values. if (CORBA::is_nil (exposed.in ())) return override._retn (); if (CORBA::is_nil (override.in ())) return exposed._retn (); ZIOP::CompressionEnablingPolicy_var override_policy_var = ZIOP::CompressionEnablingPolicy::_narrow (override.in ()); ZIOP::CompressionEnablingPolicy_var exposed_policy_var = ZIOP::CompressionEnablingPolicy::_narrow (exposed.in ()); // Both override and exposed have been set. // See if either of them has empty priority bands. if (override_policy_var->compression_enabled () && exposed_policy_var->compression_enabled ()) return override._retn (); if (!override_policy_var->compression_enabled ()) return override._retn (); return exposed._retn (); }
CORBA::Policy * TAO_ZIOP_Stub::effective_compression_id_list_policy | ( | void | ) | [private] |
Definition at line 181 of file ZIOP_Stub.cpp.
{ // Get effective override. CORBA::Policy_var override = this->TAO_Stub::get_cached_policy (TAO_CACHED_COMPRESSION_ID_LEVEL_LIST_POLICY); // Get the value from the ior. CORBA::Policy_var exposed = this->exposed_compression_id_list_policy (); ZIOP::CompressorIdLevelListPolicy_var override_policy_var = ZIOP::CompressorIdLevelListPolicy::_narrow (override.in ()); ZIOP::CompressorIdLevelListPolicy_var exposed_policy_var = ZIOP::CompressorIdLevelListPolicy::_narrow (exposed.in ()); // Reconcile client-exposed and locally set values. if (CORBA::is_nil (exposed_policy_var.in ())) return override._retn (); if (CORBA::is_nil (override_policy_var.in ())) return exposed._retn (); // Check which compressor id we should use and which level for (CORBA::ULong nr_exposed = 0; nr_exposed < exposed_policy_var->compressor_ids ()->length (); ++nr_exposed) { ::Compression::CompressorIdLevel_var exposed_compressor = exposed_policy_var->compressor_ids ()->operator [](nr_exposed); if (TAO_debug_level > 9) { ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) - ") ACE_TEXT ("TAO_ZIOP_Stub::effective_compression_id_list_policy, ") ACE_TEXT ("exposed_policy = %d, compressor_id = %C, ") ACE_TEXT ("compression_level = %d\n"), nr_exposed, TAO_ZIOP_Loader::ziop_compressorid_name ( exposed_compressor.ptr ()->compressor_id), exposed_compressor.ptr ()->compression_level)); } // check if a local policy matches this exposed policy for (CORBA::ULong nr_override = 0; nr_override < override_policy_var->compressor_ids ()->length (); ++nr_override) { ::Compression::CompressorIdLevel_var override_compressor = override_policy_var->compressor_ids ()->operator [] (nr_override); if (TAO_debug_level > 9) { ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) - ") ACE_TEXT ("TAO_ZIOP_Stub::effective_compression_id_list_policy, ") ACE_TEXT ("checking override_policy = %d, compressor_id = %C, ") ACE_TEXT ("compression_level = %d\n"), nr_override, TAO_ZIOP_Loader::ziop_compressorid_name ( override_compressor->compressor_id), override_compressor->compression_level)); } if (override_compressor->compressor_id == exposed_compressor->compressor_id) { CORBA::Policy_var tmp_policy = override_policy_var->copy (); ZIOP::CompressorIdLevelListPolicy_var idlevellist_policy_var = ZIOP::CompressorIdLevelListPolicy::_narrow (tmp_policy.in ()); if (CORBA::is_nil (idlevellist_policy_var.in ())) return override._retn (); idlevellist_policy_var->compressor_ids ()->operator [] (0).compressor_id = override_compressor->compressor_id; //according to ZIOP spec, return the compressor with the lowest compression level. idlevellist_policy_var.ptr ()->compressor_ids ()->operator [] (0).compression_level = ACE_MIN (override_compressor->compression_level, exposed_compressor->compression_level); return idlevellist_policy_var._retn (); } } } return 0; }
void TAO_ZIOP_Stub::exposed_compression_enabling_policy | ( | CORBA::Policy_ptr | policy | ) | [private] |
Definition at line 98 of file ZIOP_Stub.cpp.
{ this->compression_enabling_policy_ = CORBA::Policy::_duplicate (policy); }
CORBA::Policy * TAO_ZIOP_Stub::exposed_compression_enabling_policy | ( | void | ) | [private] |
Definition at line 87 of file ZIOP_Stub.cpp.
{ if (!this->are_policies_parsed_) { this->parse_policies (); } return CORBA::Policy::_duplicate (this->compression_enabling_policy_.in ()); }
void TAO_ZIOP_Stub::exposed_compression_id_list_policy | ( | CORBA::Policy_ptr | policy | ) | [private] |
Definition at line 81 of file ZIOP_Stub.cpp.
{ this->compression_id_list_policy_ = CORBA::Policy::_duplicate (policy); }
CORBA::Policy * TAO_ZIOP_Stub::exposed_compression_id_list_policy | ( | void | ) | [private] |
Definition at line 70 of file ZIOP_Stub.cpp.
{ if (!this->are_policies_parsed_) { this->parse_policies (); } return CORBA::Policy::_duplicate (this->compression_id_list_policy_.in ()); }
CORBA::Policy_ptr TAO_ZIOP_Stub::get_cached_policy | ( | TAO_Cached_Policy_Type | type | ) | [virtual] |
Reimplemented from TAO_Stub.
Definition at line 124 of file ZIOP_Stub.cpp.
{ // If we are dealing with a client exposed policy, check if any // value came in the IOR/reconcile IOR value and overrides. switch (type) { case TAO_CACHED_COMPRESSION_ENABLING_POLICY: { return this->effective_compression_enabling_policy (); } case TAO_CACHED_COMPRESSION_ID_LEVEL_LIST_POLICY: { return this->effective_compression_id_list_policy (); } default: break; } return this->TAO_Stub::get_cached_policy (type); }
CORBA::Policy_ptr TAO_ZIOP_Stub::get_policy | ( | CORBA::PolicyType | type | ) | [virtual] |
Returns the effective policy if type is a known client-exposed policy type. Returns the effective override for all other policy types.
Reimplemented from TAO_Stub.
Definition at line 104 of file ZIOP_Stub.cpp.
{ // If we are dealing with a client exposed policy, check if any // value came in the IOR/reconcile IOR value and overrides. switch (type) { case ZIOP::COMPRESSION_ENABLING_POLICY_ID : { return this->effective_compression_enabling_policy (); } case ZIOP::COMPRESSOR_ID_LEVEL_LIST_POLICY_ID : { return this->effective_compression_id_list_policy (); } } return this->TAO_Stub::get_policy (type); }
TAO_ZIOP_Stub& TAO_ZIOP_Stub::operator= | ( | const TAO_ZIOP_Stub & | ) | [private] |
void TAO_ZIOP_Stub::parse_policies | ( | void | ) | [private] |
Helper method used to parse the policies.
Definition at line 40 of file ZIOP_Stub.cpp.
{ CORBA::PolicyList_var policy_list = this->base_profiles_.policy_list (); CORBA::ULong const length = policy_list->length (); // Cache away the policies that we'll need later. for (CORBA::ULong i = 0; i < length; ++i) { switch (policy_list[i]->policy_type ()) { case ZIOP::COMPRESSION_ENABLING_POLICY_ID: { this->exposed_compression_enabling_policy (policy_list[i]); } break; case ZIOP::COMPRESSOR_ID_LEVEL_LIST_POLICY_ID: { this->exposed_compression_id_list_policy (policy_list[i]); } break; } } this->are_policies_parsed_ = true; }
Definition at line 91 of file ZIOP_Stub.h.
Definition at line 87 of file ZIOP_Stub.h.
Definition at line 89 of file ZIOP_Stub.h.