summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-01-31 22:09:20 +0000
committerjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-01-31 22:09:20 +0000
commit2242c964f538a521694fef7a9fcc569625f55845 (patch)
treecf30027a4c16560d54ff92cc3dfc16a18fe41f4b
parentd3ed246e9c73273f9bea73e7398721d6a340dfbd (diff)
downloadATCD-2242c964f538a521694fef7a9fcc569625f55845.tar.gz
adding DS library
-rw-r--r--modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.cpp66
-rw-r--r--modules/TAO/tao/DiffServPolicy/DiffServ_Protocols_Hooks.h2
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);