#include <DiffServ_Network_Priority_Hook.h>
Public Member Functions | |
virtual | ~TAO_DiffServ_Network_Priority_Hook (void) |
void | update_network_priority (TAO_Root_POA &poa, TAO_POA_Policy_Set &poa_policy_set) |
void | set_dscp_codepoint (TAO_ServerRequest &req, TAO_Root_POA &poa) |
Definition at line 30 of file DiffServ_Network_Priority_Hook.h.
TAO_DiffServ_Network_Priority_Hook::~TAO_DiffServ_Network_Priority_Hook | ( | void | ) | [virtual] |
Definition at line 23 of file DiffServ_Network_Priority_Hook.cpp.
{ }
void TAO_DiffServ_Network_Priority_Hook::set_dscp_codepoint | ( | TAO_ServerRequest & | req, | |
TAO_Root_POA & | poa | |||
) | [virtual] |
This function is a hook, that is used by the POA's servant dispatcher when it tries to assign DiffServ codepoints on the replies.
Reimplemented from TAO_Network_Priority_Hook.
Definition at line 65 of file DiffServ_Network_Priority_Hook.cpp.
{ CORBA::Long dscp_codepoint = 0; 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) { if (nph != 0) { 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 (); } TAO_Connection_Handler *connection_handler = req.transport ()->connection_handler (); connection_handler->set_dscp_codepoint (dscp_codepoint); }
void TAO_DiffServ_Network_Priority_Hook::update_network_priority | ( | TAO_Root_POA & | poa, | |
TAO_POA_Policy_Set & | poa_policy_set | |||
) | [virtual] |
This function is a hook, that is called from the Root_POA's constructor. It allows the POA to cache the server side network priority policy, so that it can be used for sending replies with the policy-specified DiffServ codepoint.
Reimplemented from TAO_Network_Priority_Hook.
Definition at line 28 of file DiffServ_Network_Priority_Hook.cpp.
{ for (CORBA::ULong i = 0; i < policy_set.num_policies (); i++) { CORBA::Policy_var policy = policy_set.get_policy_by_index (i); if (policy->policy_type () == TAO::NETWORK_PRIORITY_TYPE) { ::TAO::NetworkPriorityPolicy_var npp = ::TAO::NetworkPriorityPolicy::_narrow (policy.in ()); if (!CORBA::is_nil (npp.in ())) { TAO::NetworkPriorityModel network_priority_model = npp->network_priority_model (); poa.cached_policies ().network_priority_model ( TAO::Portable_Server::Cached_Policies::NetworkPriorityModel ( network_priority_model)); TAO::DiffservCodepoint request_diffserv_codepoint = npp->request_diffserv_codepoint (); TAO::DiffservCodepoint reply_diffserv_codepoint = npp->reply_diffserv_codepoint (); poa.cached_policies ().request_diffserv_codepoint ( request_diffserv_codepoint); poa.cached_policies ().reply_diffserv_codepoint ( reply_diffserv_codepoint); } } } }