diff options
author | jai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-01-31 22:09:20 +0000 |
---|---|---|
committer | jai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-01-31 22:09:20 +0000 |
commit | 2242c964f538a521694fef7a9fcc569625f55845 (patch) | |
tree | cf30027a4c16560d54ff92cc3dfc16a18fe41f4b | |
parent | d3ed246e9c73273f9bea73e7398721d6a340dfbd (diff) | |
download | ATCD-2242c964f538a521694fef7a9fcc569625f55845.tar.gz |
adding DS library
-rw-r--r-- | modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.cpp | 66 | ||||
-rw-r--r-- | modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.h | 2 |
2 files changed, 65 insertions, 3 deletions
diff --git a/modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.cpp b/modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.cpp index 86d3cdc9b8e..26c4cb1778f 100644 --- a/modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.cpp +++ b/modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.cpp @@ -84,9 +84,71 @@ TAO_DS_Network_Priority_Protocols_Hooks::set_dscp_codepoint ( } const CORBA::Long -TAO_DS_Network_Priority_Protocols_Hooks::get_dscp_codepoint (void) +TAO_DS_Network_Priority_Protocols_Hooks::get_dscp_codepoint ( + TAO_Stub *stub, CORBA::Object *object) { - return this->dscp_codepoint_; + CORBA::Policy_var client_nw_priority_policy = + stub->get_cached_policy ( + TAO_CACHED_POLICY_CLIENT_NETWORK_PRIORITY + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::Policy_var server_nw_priority_policy = + object->_get_cached_policy ( + TAO_CACHED_POLICY_NETWORK_PRIORITY + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::Long dscp = 0; + TAO::DiffservCodepoint diffserv_codepoint; + + if (CORBA::is_nil (client_nw_priority_policy.in ())) + { + if (CORBA::is_nil (server_nw_priority_policy.in ())) + { + // cannot happen + } + else + { + TAO::NetworkPriorityPolicy_var npp = + TAO::NetworkPriorityPolicy::_narrow ( + server_nw_priority_policy.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (!CORBA::is_nil (npp.in ())) + { + TAO::NetworkPriorityModel network_priority_model = + npp->network_priority_model (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + if (network_priority_model == + TAO::SERVER_DECLARED_NETWORK_PRIORITY) + { + diffserv_codepoint = + npp->request_diffserv_codepoint ( + ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + dscp = diffserv_codepoint; + } + } + } + } + else + { + TAO::NetworkPriorityPolicy_var client_nw_priority = + TAO::NetworkPriorityPolicy::_narrow (client_nw_priority_policy.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (!CORBA::is_nil (client_nw_priority.in ())) + { + diffserv_codepoint = + client_nw_priority->request_diffserv_codepoint (); + dscp = diffserv_codepoint; + } + } + return dscp; } TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.h b/modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.h index 0a39c0268c6..f770212214f 100644 --- a/modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.h +++ b/modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.h @@ -42,7 +42,7 @@ public: /// Initialize the protocols hooks instance. void init_hooks (TAO_ORB_Core *orb_core); - const CORBA::Long get_dscp_codepoint (void); + const CORBA::Long get_dscp_codepoint (TAO_Stub *stub, CORBA::Object *object); void set_dscp_codepoint (CORBA::Long dscp_codepoint); |