diff options
Diffstat (limited to 'ACE/examples/QOS/Change_Receiver_FlowSpec/Fill_ACE_QoS.cpp')
-rw-r--r-- | ACE/examples/QOS/Change_Receiver_FlowSpec/Fill_ACE_QoS.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/ACE/examples/QOS/Change_Receiver_FlowSpec/Fill_ACE_QoS.cpp b/ACE/examples/QOS/Change_Receiver_FlowSpec/Fill_ACE_QoS.cpp new file mode 100644 index 00000000000..c04e0952dfa --- /dev/null +++ b/ACE/examples/QOS/Change_Receiver_FlowSpec/Fill_ACE_QoS.cpp @@ -0,0 +1,99 @@ +// Fill_ACE_QoS.cpp +// $Id$ + +#include "Fill_ACE_QoS.h" + + + +const iovec Fill_ACE_QoS::iov_ = {0,0}; + +Fill_ACE_QoS::Fill_ACE_QoS (void) +{ + ACE_NEW (this->default_traffic_, + ACE_Flow_Spec (ACE_QOS_NOT_SPECIFIED, + ACE_QOS_NOT_SPECIFIED, + ACE_QOS_NOT_SPECIFIED, + ACE_QOS_NOT_SPECIFIED, + ACE_QOS_NOT_SPECIFIED, + ACE_SERVICETYPE_NOTRAFFIC, + ACE_QOS_NOT_SPECIFIED, + ACE_QOS_NOT_SPECIFIED, + 25, + 1)); +} + +// destructor. +Fill_ACE_QoS::~Fill_ACE_QoS (void) +{} + +int +Fill_ACE_QoS::fill_simplex_receiver_qos (ACE_QoS &ace_qos, + const ACE_CString &recv_flow_name) +{ + ACE_Flow_Spec *recv_flow_spec = 0; + + if (this->map ().find (recv_flow_name, recv_flow_spec) != 0) + ACE_ERROR_RETURN ((LM_DEBUG, + "Unable to find a FlowSpec with name %s", + recv_flow_name.c_str ()), + -1); + ace_qos.receiving_flowspec (recv_flow_spec); + ace_qos.sending_flowspec ((this->default_traffic_)); + ace_qos.provider_specific (Fill_ACE_QoS::iov_); + + return 0; +} + + +int +Fill_ACE_QoS::fill_simplex_sender_qos (ACE_QoS &ace_qos, + const ACE_CString &send_flow_name) +{ + ACE_Flow_Spec *send_flow_spec = 0; + + if (this->map ().find (send_flow_name, send_flow_spec) != 0) + ACE_ERROR_RETURN ((LM_DEBUG, + "Unable to find a FlowSpec with name %s", + send_flow_name.c_str ()), + -1); + + ace_qos.receiving_flowspec ((this->default_traffic_)); + ace_qos.sending_flowspec (send_flow_spec); + ace_qos.provider_specific (Fill_ACE_QoS::iov_); + + return 0; +} + +int +Fill_ACE_QoS::fill_duplex_qos (ACE_QoS &ace_qos, + const ACE_CString &recv_flow_name, + const ACE_CString &send_flow_name) +{ + ACE_Flow_Spec *send_flow_spec = 0; + ACE_Flow_Spec *recv_flow_spec = 0; + + if (this->map ().find (recv_flow_name, recv_flow_spec) != 0) + ACE_ERROR_RETURN ((LM_DEBUG, + "Unable to find a FlowSpec with name %s", + recv_flow_name.c_str ()), + -1); + + if (this->map ().find (send_flow_name, send_flow_spec) != 0) + ACE_ERROR_RETURN ((LM_DEBUG, + "Unable to find a FlowSpec with name %s", + send_flow_name.c_str ()), + -1); + + ace_qos.receiving_flowspec (recv_flow_spec); + ace_qos.sending_flowspec (send_flow_spec); + ace_qos.provider_specific (Fill_ACE_QoS::iov_); + + return 0; +} + +Fill_ACE_QoS::FLOW_SPEC_HASH_MAP& +Fill_ACE_QoS::map (void) +{ + return this->flow_spec_map_; +} + |