summaryrefslogtreecommitdiff
path: root/ace/ATM_QoS.cpp
diff options
context:
space:
mode:
authorruibiao <ruibiao@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-10-12 16:30:51 +0000
committerruibiao <ruibiao@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-10-12 16:30:51 +0000
commita5692f93092de6765f3202b19c4abae0b3743c87 (patch)
tree7398aaadef5768b7bba61447f2128dcdb76d2112 /ace/ATM_QoS.cpp
parent027abfb756f3368eae031230bc70188cd25c5b89 (diff)
downloadATCD-a5692f93092de6765f3202b19c4abae0b3743c87.tar.gz
ace/ATM_{Addr,Stream,Acceptor,Connector,QoS,Params}.{h,cpp,i}: Added support
for Fore ATM on Windows platform. Enabled when ACE_HAS_ATM and ACE_HAS_FORE_ATM_WS2 are defined.
Diffstat (limited to 'ace/ATM_QoS.cpp')
-rw-r--r--ace/ATM_QoS.cpp428
1 files changed, 305 insertions, 123 deletions
diff --git a/ace/ATM_QoS.cpp b/ace/ATM_QoS.cpp
index c86c661b2d8..747098034ab 100644
--- a/ace/ATM_QoS.cpp
+++ b/ace/ATM_QoS.cpp
@@ -27,27 +27,147 @@ const int ACE_ATM_QoS::DEFAULT_SELECTOR = 0x0;
ACE_ALLOC_HOOK_DEFINE(ACE_ATM_QoS)
-void
-ACE_ATM_QoS::dump (void) const
-{
- ACE_TRACE ("ACE_ATM_QoS::dump");
-}
-
-void
-ACE_ATM_QoS::set_rate (ACE_HANDLE fd,
- int rate,
- int flags)
+ACE_ATM_QoS::ACE_ATM_QoS( int rate )
{
- ACE_TRACE ("ACE_ATM_QoS::set_rate");
+ ACE_TRACE( "ACE_ATM_QoS::ACE_ATM_QoS" );
#if defined (ACE_HAS_FORE_ATM_WS2)
- ACE_UNUSED_ARG (rate);
+ AAL_PARAMETERS_IE ie_aalparams;
+ ATM_TRAFFIC_DESCRIPTOR_IE ie_td;
+ ATM_BROADBAND_BEARER_CAPABILITY_IE ie_bbc;
+ ATM_QOS_CLASS_IE ie_qos;
+ Q2931_IE *ie_ptr;
+ int size;
+
+ // Setting up cbr parameters ...
+ ie_aalparams.AALType = AALTYPE_5;
+ ie_aalparams.AALSpecificParameters.AAL5Parameters.ForwardMaxCPCSSDUSize
+ = 1516; //8096;
+ ie_aalparams.AALSpecificParameters.AAL5Parameters.BackwardMaxCPCSSDUSize
+ = 1516; //8096;
+ ie_aalparams.AALSpecificParameters.AAL5Parameters.Mode = AAL5_MODE_MESSAGE;
+ ie_aalparams.AALSpecificParameters.AAL5Parameters.SSCSType = AAL5_SSCS_NULL;
+
+ size = sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(AAL_PARAMETERS_IE);
+
+ ie_td.Forward.PeakCellRate_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Forward.PeakCellRate_CLP01 = rate;
+ ie_td.Forward.SustainableCellRate_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Forward.SustainableCellRate_CLP01 = SAP_FIELD_ABSENT;
+ ie_td.Forward.MaxBurstSize_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Forward.MaxBurstSize_CLP01 = SAP_FIELD_ABSENT;
+ ie_td.Forward.Tagging = SAP_FIELD_ABSENT;
+
+ ie_td.Backward.PeakCellRate_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Backward.PeakCellRate_CLP01 = rate;
+ ie_td.Backward.SustainableCellRate_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Backward.SustainableCellRate_CLP01 = SAP_FIELD_ABSENT;
+ ie_td.Backward.MaxBurstSize_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Backward.MaxBurstSize_CLP01 = SAP_FIELD_ABSENT;
+ ie_td.Backward.Tagging = SAP_FIELD_ABSENT;
+
+ ie_td.BestEffort = 0; // Note: this must be set to zero for CBR.
+
+ size += sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( ATM_TRAFFIC_DESCRIPTOR_IE );
+
+ ie_bbc.BearerClass = BCOB_X;
+ ie_bbc.TrafficType = TT_CBR;
+ ie_bbc.TimingRequirements = TR_END_TO_END;
+ ie_bbc.ClippingSusceptability = CLIP_NOT;
+ ie_bbc.UserPlaneConnectionConfig = UP_P2P;
+
+ size += sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( ATM_BROADBAND_BEARER_CAPABILITY_IE );
+
+ ie_qos.QOSClassForward = QOS_CLASS1;
+ ie_qos.QOSClassBackward = QOS_CLASS1; // This may not be really used
+ // since we do only simplex data xfer.
+
+ size += sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_QOS_CLASS_IE);
+
+ qos_.ProviderSpecific.buf = (char *) ACE_OS::malloc(size);
+ qos_.ProviderSpecific.len = size;
+ ACE_OS::memset(qos_.ProviderSpecific.buf, 0, size);
+
+ ie_ptr = (Q2931_IE *) qos_.ProviderSpecific.buf;
+ ie_ptr->IEType = IE_AALParameters;
+ ie_ptr->IELength = sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( AAL_PARAMETERS_IE );
+ ACE_OS::memcpy(ie_ptr->IE, &ie_aalparams, sizeof(AAL_PARAMETERS_IE));
+
+ ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
+ ie_ptr->IEType = IE_TrafficDescriptor;
+ ie_ptr->IELength = sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( ATM_TRAFFIC_DESCRIPTOR_IE );
+ ACE_OS::memcpy(ie_ptr->IE, &ie_td, sizeof(ATM_TRAFFIC_DESCRIPTOR_IE));
+
+ ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
+ ie_ptr->IEType = IE_BroadbandBearerCapability;
+ ie_ptr->IELength = sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( ATM_BROADBAND_BEARER_CAPABILITY_IE );
+ ACE_OS::memcpy(ie_ptr->IE,
+ &ie_bbc,
+ sizeof(ATM_BROADBAND_BEARER_CAPABILITY_IE));
+
+ ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
+ ie_ptr->IEType = IE_QOSClass;
+ ie_ptr->IELength = sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( ATM_QOS_CLASS_IE );
+ ACE_OS::memcpy(ie_ptr->IE, &ie_qos, sizeof(ATM_QOS_CLASS_IE));
+
+// qos_.SendingFlowspec.TokenRate = 0xffffffff;
+// qos_.SendingFlowspec.TokenBucketSize = 0xffffffff;
+// qos_.SendingFlowspec.PeakBandwidth = 0xffffffff;
+// qos_.SendingFlowspec.Latency = 0xffffffff;
+// qos_.SendingFlowspec.DelayVariation = 0xffffffff;
+// qos_.SendingFlowspec.ServiceType = SERVICETYPE_BESTEFFORT;
+ // This will most probably be ignored by the service provider.
+// qos_.SendingFlowspec.MaxSduSize = 0xffffffff;
+// qos_.SendingFlowspec.MinimumPolicedSize = 0xffffffff;
+
+// qos_.ReceivingFlowspec.TokenRate = 0xffffffff;
+// qos_.ReceivingFlowspec.TokenBucketSize = 0xffffffff;
+// qos_.ReceivingFlowspec.PeakBandwidth = 0xffffffff;
+// qos_.ReceivingFlowspec.Latency = 0xffffffff;
+// qos_.ReceivingFlowspec.DelayVariation = 0xffffffff;
+// qos_.ReceivingFlowspec.ServiceType = SERVICETYPE_BESTEFFORT;
+ // This will most probably be ignored by the service provider.
+// qos_.ReceivingFlowspec.MaxSduSize = 0xffffffff;
+// qos_.ReceivingFlowspec.MinimumPolicedSize = 0;
+
+ ACE_Flow_Spec send_fspec( 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ SERVICETYPE_BESTEFFORT,
+ // This will most probably ignored by SP.
+ 0xffffffff,
+ 0xffffffff,
+ 15,
+ ACE_DEFAULT_THREAD_PRIORITY ),
+ recv_fspec( 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ SERVICETYPE_BESTEFFORT,
+ // This will most probably ignored by SP.
+ 0xffffffff,
+ 0,
+ 15,
+ ACE_DEFAULT_THREAD_PRIORITY );
+
+ qos_.sending_flowspec( send_fspec );
+ qos_.receiving_flowspec( recv_fspec );
#elif defined (ACE_HAS_FORE_ATM_XTI)
- long optlen = 0;
- qos_.buf = construct_options(fd,
- rate,
- flags,
- &optlen);
- qos_.len = optlen;
+ ACE_UNUSED_ARG (rate);
#else
ACE_UNUSED_ARG (rate);
#endif /* ACE_HAS_FORE_ATM_WS2 */
@@ -60,111 +180,143 @@ ACE_ATM_QoS::set_cbr_rate (int rate)
#if defined (ACE_HAS_FORE_ATM_WS2)
AAL_PARAMETERS_IE ie_aalparams;
ATM_TRAFFIC_DESCRIPTOR_IE ie_td;
- ATM_BROADBAND_BEARER_CAPBILITY_IE ie_bbc;
+ ATM_BROADBAND_BEARER_CAPABILITY_IE ie_bbc;
ATM_QOS_CLASS_IE ie_qos;
Q2931_IE *ie_ptr;
int size;
- ie_aalparams.AALType = AALTYPE_5;
- ie_aalparams.AALSpecificParameters.AAL5Parameters.ForwardMaxCPCSSDUSize =
- 1516;
- ie_aalparams.AALSpecificParameters.AAL5Parameters.BackwardMaxCPCSSDUSize =
- 1516;
- ie_aalparams.AALSpecificParameters.AAL5Parameters.Mode = AAL5_MODE_MESSAGE;
- ie_aalparams.AALSpecificParameters.AAL5Parameters.SSCSType = AAL5_SSCS_NULL;
+ ACE_OS::printf( "ATM_QoS(set_cbr_rate): set rate to %d c/s\n", rate );
- size = sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(AAL_PARAMETERS_IE);
+ // Setting up cbr parameters ...
+ ie_aalparams.AALType = AALTYPE_5;
+ ie_aalparams.AALSpecificParameters.AAL5Parameters.ForwardMaxCPCSSDUSize
+ = 1516; //8096;
+ ie_aalparams.AALSpecificParameters.AAL5Parameters.BackwardMaxCPCSSDUSize
+ = 1516; //8096;
+ ie_aalparams.AALSpecificParameters.AAL5Parameters.Mode = AAL5_MODE_MESSAGE;
+ ie_aalparams.AALSpecificParameters.AAL5Parameters.SSCSType = AAL5_SSCS_NULL;
- ie_td.Forward.PeakCellRate_CLP0 = SAP_FIELD_ABSENT;
- ie_td.Forward.PeakCellRate_CLP01 = cellRate;
- ie_td.Forward.SustainableCellRate_CLP0 = SAP_FIELD_ABSENT;
- ie_td.Forward.SustainableCellRate_CLP01 = SAP_FIELD_ABSENT;
- ie_td.Forward.MaxBurstSize_CLP0 = SAP_FIELD_ABSENT;
- ie_td.Forward.MaxBurstSize_CLP01 = SAP_FIELD_ABSENT;
- ie_td.Forward.Tagging = SAP_FIELD_ABSENT;
-
- ie_td.Backward.PeakCellRate_CLP0 = SAP_FIELD_ABSENT;
- ie_td.Backward.PeakCellRate_CLP01 = cellRate;
- ie_td.Backward.SustainableCellRate_CLP0 = SAP_FIELD_ABSENT;
- ie_td.Backward.SustainableCellRate_CLP01 = SAP_FIELD_ABSENT;
- ie_td.Backward.MaxBurstSize_CLP0 = SAP_FIELD_ABSENT;
- ie_td.Backward.MaxBurstSize_CLP01 = SAP_FIELD_ABSENT;
- ie_td.Backward.Tagging = SAP_FIELD_ABSENT;
-
- ie_td.BestEffort = 0; // Note: this must be set to zero for CBR
-
- size +=
- sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_TRAFFIC_DESCRIPTOR_IE);
-
- ie_bbc.BearerClass = BCOB_X;
- ie_bbc.TrafficType = TT_CBR;
- ie_bbc.TimingRequirements = TR_END_TO_END;
- ie_bbc.ClippingSusceptability = CLIP_NOT;
- ie_bbc.UserPlaneConnectionConfig = UP_P2P;
-
- size += sizeof(Q2931_IE_TYPE) + sizeof(ULONG)
- + sizeof(ATM_BROADBAND_BEARER_CAPABILITY_IE);
-
- ie_qos.QOSClassForward = QOS_CLASS1;
- ie_qos.QOSClassBackward = QOS_CLASS1;
-
- size += sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_QOS_CLASS_IE);
-
- qos_.ProviderSpecific.buf = (char *) malloc(size);
- qos_.ProviderSpecific.len = size;
- ACE_OS::memset(qos_.ProviderSpecific.buf,
- 0,
- size);
-
- ie_ptr = (Q2931_IE *) qos_.ProviderSpecific.buf;
- ie_ptr->IEType = IE_AALParameters;
- ie_ptr->IELength = sizeof(Q2931_IE_TYPE) + sizeof(ULONG)
- + sizeof(AAL_PARAMETERS_IE);
- ACE_OS::memcpy(ie_ptr->IE,
- &ie_aalparams,
- sizeof(AAL_PARAMETERS_IE));
-
- ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
- ie_ptr->IEType = IE_TrafficDescriptor;
- ie_ptr->IELength =
- sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_TRAFFIC_DESCRIPTOR_IE);
- ACE_OS::memcpy(ie_ptr->IE,
- &ie_td,
- sizeof(ATM_TRAFFIC_DESCRIPTOR_IE));
-
- ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
- ie_ptr->IEType = IE_BroadbandBearerCapability;
- ie_ptr->IELength = sizeof(Q2931_IE_TYPE) + sizeof(ULONG) +
- sizeof(ATM_BROADBAND_BEARER_CAPABILITY_IE);
- ACE_OS::memcpy(ie_ptr->IE,
- &ie_bbc,
- sizeof(ATM_BROADBAND_BEARER_CAPABILITY_IE));
+ size = sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(AAL_PARAMETERS_IE);
- ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
- ie_ptr->IEType = IE_QOSClass;
- ie_ptr->IELength =
- sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_QOS_CLASS_IE);
- ACE_OS::memcpy(ie_ptr->IE,
- &ie_qos,
- sizeof(ATM_QOS_CLASS_IE));
-
- qos_.SendingFlowspec.TokenRate = -1;
- qos_.SendingFlowspec.TokenBucketSize = -1;
- qos_.SendingFlowspec.PeakBandwidth = -1;
- qos_.SendingFlowspec.Latency = -1;
- qos_.SendingFlowspec.DelayVariation = -1;
- qos_.SendingFlowspec.LevelOfGuarantee = BestEffortService;
- // will most probably be ignored by the service provider
- qos_.SendingFlowspec.CostOfCall = 0;
-
- qos_.ReceivingFlowspec.TokenRate = -1;
- qos_.ReceivingFlowspec.TokenBucketSize = -1;
- qos_.ReceivingFlowspec.PeakBandwidth = -1;
- qos_.ReceivingFlowspec.Latency = -1;
- qos_.ReceivingFlowspec.DelayVariation = -1;
- qos_.ReceivingFlowspec.LevelOfGuarantee = BestEffortService;
- // will most probably be ignored by the service provider
- qos_.ReceivingFlowspec.CostOfCall = 0;
+ ie_td.Forward.PeakCellRate_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Forward.PeakCellRate_CLP01 = rate;
+ ie_td.Forward.SustainableCellRate_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Forward.SustainableCellRate_CLP01 = SAP_FIELD_ABSENT;
+ ie_td.Forward.MaxBurstSize_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Forward.MaxBurstSize_CLP01 = SAP_FIELD_ABSENT;
+ ie_td.Forward.Tagging = SAP_FIELD_ABSENT;
+
+ ie_td.Backward.PeakCellRate_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Backward.PeakCellRate_CLP01 = rate;
+ ie_td.Backward.SustainableCellRate_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Backward.SustainableCellRate_CLP01 = SAP_FIELD_ABSENT;
+ ie_td.Backward.MaxBurstSize_CLP0 = SAP_FIELD_ABSENT;
+ ie_td.Backward.MaxBurstSize_CLP01 = SAP_FIELD_ABSENT;
+ ie_td.Backward.Tagging = SAP_FIELD_ABSENT;
+
+ ie_td.BestEffort = 0; // Note: this must be set to zero for CBR.
+
+ size += sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( ATM_TRAFFIC_DESCRIPTOR_IE );
+
+ ie_bbc.BearerClass = BCOB_X;
+ ie_bbc.TrafficType = TT_CBR;
+ ie_bbc.TimingRequirements = TR_END_TO_END;
+ ie_bbc.ClippingSusceptability = CLIP_NOT;
+ ie_bbc.UserPlaneConnectionConfig = UP_P2P;
+
+ size += sizeof(Q2931_IE_TYPE)
+ + sizeof(ULONG)
+ + sizeof(ATM_BROADBAND_BEARER_CAPABILITY_IE);
+
+ ie_qos.QOSClassForward = QOS_CLASS1;
+ ie_qos.QOSClassBackward = QOS_CLASS1; // This may not be really used
+ // since we only simplex data xfer.
+
+ size += sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_QOS_CLASS_IE);
+
+ qos_.ProviderSpecific.buf = (char *) ACE_OS::malloc(size);
+ qos_.ProviderSpecific.len = size;
+ ACE_OS::memset(qos_.ProviderSpecific.buf, 0, size);
+
+ ie_ptr = (Q2931_IE *) qos_.ProviderSpecific.buf;
+ ie_ptr->IEType = IE_AALParameters;
+ ie_ptr->IELength
+ = sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( AAL_PARAMETERS_IE );
+ ACE_OS::memcpy(ie_ptr->IE, &ie_aalparams, sizeof(AAL_PARAMETERS_IE));
+
+ ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
+ ie_ptr->IEType = IE_TrafficDescriptor;
+ ie_ptr->IELength
+ = sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( ATM_TRAFFIC_DESCRIPTOR_IE );
+ ACE_OS::memcpy(ie_ptr->IE, &ie_td, sizeof(ATM_TRAFFIC_DESCRIPTOR_IE));
+
+ ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
+ ie_ptr->IEType = IE_BroadbandBearerCapability;
+ ie_ptr->IELength
+ = sizeof( Q2931_IE_TYPE )
+ + sizeof( ULONG )
+ + sizeof( ATM_BROADBAND_BEARER_CAPABILITY_IE );
+ ACE_OS::memcpy( ie_ptr->IE,
+ &ie_bbc,
+ sizeof( ATM_BROADBAND_BEARER_CAPABILITY_IE ));
+
+ ie_ptr = (Q2931_IE *) ((char *)ie_ptr + ie_ptr->IELength);
+ ie_ptr->IEType = IE_QOSClass;
+ ie_ptr->IELength
+ = sizeof(Q2931_IE_TYPE) + sizeof(ULONG) + sizeof(ATM_QOS_CLASS_IE);
+ ACE_OS::memcpy(ie_ptr->IE, &ie_qos, sizeof(ATM_QOS_CLASS_IE));
+
+// qos_.SendingFlowspec.TokenRate = 0xffffffff;
+// qos_.SendingFlowspec.TokenBucketSize = 0xffffffff;
+// qos_.SendingFlowspec.PeakBandwidth = 0xffffffff;
+// qos_.SendingFlowspec.Latency = 0xffffffff;
+// qos_.SendingFlowspec.DelayVariation = 0xffffffff;
+// qos_.SendingFlowspec.ServiceType = SERVICETYPE_BESTEFFORT;
+ // This will most probably be ignored by the service provider.
+// qos_.SendingFlowspec.MaxSduSize = 0xffffffff;
+// qos_.SendingFlowspec.MinimumPolicedSize = 0xffffffff;
+
+// qos_.ReceivingFlowspec.TokenRate = 0xffffffff;
+// qos_.ReceivingFlowspec.TokenBucketSize = 0xffffffff;
+// qos_.ReceivingFlowspec.PeakBandwidth = 0xffffffff;
+// qos_.ReceivingFlowspec.Latency = 0xffffffff;
+// qos_.ReceivingFlowspec.DelayVariation = 0xffffffff;
+// qos_.ReceivingFlowspec.ServiceType = SERVICETYPE_BESTEFFORT;
+ // This will most probably be ignored by the service provider.
+// qos_.ReceivingFlowspec.MaxSduSize = 0xffffffff;
+// qos_.ReceivingFlowspec.MinimumPolicedSize = 0;
+
+ ACE_Flow_Spec send_fspec( 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ SERVICETYPE_BESTEFFORT,
+ // This will most probably ignored by SP.
+ 0xffffffff,
+ 0xffffffff,
+ 15,
+ ACE_DEFAULT_THREAD_PRIORITY ),
+ recv_fspec( 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ 0xffffffff,
+ SERVICETYPE_BESTEFFORT,
+ // This will most probably ignored by SP.
+ 0xffffffff,
+ 0,
+ 15,
+ ACE_DEFAULT_THREAD_PRIORITY );
+
+ qos_.sending_flowspec( send_fspec );
+ qos_.receiving_flowspec( recv_fspec );
#elif defined (ACE_HAS_FORE_ATM_XTI)
ACE_UNUSED_ARG (rate);
#else
@@ -172,6 +324,35 @@ ACE_ATM_QoS::set_cbr_rate (int rate)
#endif /* ACE_HAS_FORE_ATM_WS2 */
}
+void
+ACE_ATM_QoS::dump (void) const
+{
+ ACE_TRACE ("ACE_ATM_QoS::dump");
+}
+
+void
+ACE_ATM_QoS::set_rate (ACE_HANDLE fd,
+ int rate,
+ int flags)
+{
+ ACE_TRACE ("ACE_ATM_QoS::set_rate");
+#if defined (ACE_HAS_FORE_ATM_WS2)
+ set_cbr_rate( rate );
+
+ ACE_UNUSED_ARG( fd );
+ ACE_UNUSED_ARG( flags );
+#elif defined (ACE_HAS_FORE_ATM_XTI)
+ long optlen = 0;
+ qos_.buf = construct_options(fd,
+ rate,
+ flags,
+ &optlen);
+ qos_.len = optlen;
+#else
+ ACE_UNUSED_ARG (rate);
+#endif /* ACE_HAS_FORE_ATM_WS2 */
+}
+
char*
ACE_ATM_QoS::construct_options (ACE_HANDLE fd,
int rate,
@@ -181,7 +362,7 @@ ACE_ATM_QoS::construct_options (ACE_HANDLE fd,
#if defined (ACE_HAS_FORE_ATM_WS2)
ACE_UNUSED_ARG (fd);
ACE_UNUSED_ARG (rate);
- ACE_UNUSED_ARG (flag);
+ ACE_UNUSED_ARG (flags);
ACE_UNUSED_ARG (len);
return (0);
#elif defined (ACE_HAS_FORE_ATM_XTI)
@@ -195,13 +376,13 @@ ACE_ATM_QoS::construct_options (ACE_HANDLE fd,
ACE_OS::t_error ("t_getinfo");
return 0;
}
-
- buf = (char *) ACE_OS::malloc (info.options);
- if (buf == 0)
+ buf = (char *) ACE_OS::malloc (info.options);
+
+ if (buf == 0)
ACE_ERROR_RETURN ((LM_ERROR,
- ASYS_TEXT ("Unable to allocate %ld bytes for options\n"),
- info.options),
+ ASYS_TEXT ("Unable to allocate %ld bytes for options\n"),
+ info.options),
0);
popt = (struct t_opthdr *) buf;
@@ -344,7 +525,7 @@ ACE_ATM_QoS::construct_options (ACE_HANDLE fd,
popt = T_OPT_NEXTHDR (buf, info.options, popt);
}
- // return actual size of options and option buffer to user
+ // Return actual size of options and option buffer to user.
*len = (char *) popt - buf;
return buf;
@@ -358,3 +539,4 @@ ACE_ATM_QoS::construct_options (ACE_HANDLE fd,
}
#endif /* ACE_HAS_ATM */
+