summaryrefslogtreecommitdiff
path: root/modules/TAO/tao/DiffServPolicy/DiffServ_Network_Priority_Hook.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/TAO/tao/DiffServPolicy/DiffServ_Network_Priority_Hook.cpp')
-rw-r--r--modules/TAO/tao/DiffServPolicy/DiffServ_Network_Priority_Hook.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/modules/TAO/tao/DiffServPolicy/DiffServ_Network_Priority_Hook.cpp b/modules/TAO/tao/DiffServPolicy/DiffServ_Network_Priority_Hook.cpp
index 8c07ca25787..dd377d2b3ec 100644
--- a/modules/TAO/tao/DiffServPolicy/DiffServ_Network_Priority_Hook.cpp
+++ b/modules/TAO/tao/DiffServPolicy/DiffServ_Network_Priority_Hook.cpp
@@ -5,6 +5,10 @@
#include "tao/PortableServer/POA_Policy_Set.h"
#include "tao/DiffServPolicy/Server_Network_Priority_Policy.h"
#include "tao/DiffServPolicy/DiffServPolicyC.h"
+#include "tao/Service_Context.h"
+#include "tao/TAO_Server_Request.h"
+#include "tao/Network_Priority_Protocols_Hooks.h"
+#include "tao/ORB_Core.h"
ACE_RCSID(DiffServPolicy,
DiffServ_Network_Priority_Hook,
@@ -55,6 +59,38 @@ TAO_DiffServ_Network_Priority_Hook::update_network_priority (
}
}
+CORBA::Long
+TAO_DiffServ_Network_Priority_Hook::get_dscp_codepoint (
+ TAO_ServerRequest &req, TAO_Root_POA &poa)
+{
+ CORBA::Long dscp_codepoint;
+ TAO_Service_Context &request_service_context =
+ req.request_service_context ();
+
+ TAO_Network_Priority_Protocols_Hooks *nph =
+ poa.orb_core ().get_network_priority_protocols_hooks ();
+
+ TAO::Portable_Server::Cached_Policies::NetworkPriorityModel npm =
+ poa.cached_policies ().network_priority_model ();
+
+ if (npm == TAO::Portable_Server::Cached_Policies::
+ CLIENT_PROPAGATED_NETWORK_PRIORITY)
+ {
+ dscp_codepoint = nph->get_dscp_codepoint (request_service_context);
+ }
+ else if (npm == TAO::Portable_Server::Cached_Policies::
+ SERVER_DECLARED_NETWORK_PRIORITY)
+ {
+ dscp_codepoint = poa.cached_policies ().reply_diffserv_codepoint ();
+ }
+ else
+ {
+ dscp_codepoint = 0;
+ }
+
+ return dscp_codepoint;
+}
+
TAO_END_VERSIONED_NAMESPACE_DECL
ACE_FACTORY_DEFINE (TAO_DiffServPolicy, TAO_DiffServ_Network_Priority_Hook)