summaryrefslogtreecommitdiff
path: root/TAO/tao/RTCORBA/Linear_Network_Priority_Mapping.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/RTCORBA/Linear_Network_Priority_Mapping.cpp')
-rw-r--r--TAO/tao/RTCORBA/Linear_Network_Priority_Mapping.cpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/TAO/tao/RTCORBA/Linear_Network_Priority_Mapping.cpp b/TAO/tao/RTCORBA/Linear_Network_Priority_Mapping.cpp
new file mode 100644
index 00000000000..5f9e9c555a8
--- /dev/null
+++ b/TAO/tao/RTCORBA/Linear_Network_Priority_Mapping.cpp
@@ -0,0 +1,130 @@
+// $Id$
+
+#include "tao/orbconf.h"
+
+#include "Linear_Network_Priority_Mapping.h"
+#include "tao/debug.h"
+#include "ace/Sched_Params.h"
+
+#if !defined (__ACE_INLINE__)
+# include "Linear_Network_Priority_Mapping.i"
+#endif /* ! __ACE_INLINE__ */
+
+ACE_RCSID(Strategies, Linear_Network_Priority_Mapping, "$Id$")
+
+#define IPDSFIELD_DSCP_DEFAULT 0x00
+#define IPDSFIELD_DSCP_CS1 0x08
+#define IPDSFIELD_DSCP_CS2 0x10
+#define IPDSFIELD_DSCP_CS3 0x18
+#define IPDSFIELD_DSCP_CS4 0x20
+#define IPDSFIELD_DSCP_CS5 0x28
+#define IPDSFIELD_DSCP_CS6 0x30
+#define IPDSFIELD_DSCP_CS7 0x38
+#define IPDSFIELD_DSCP_AF11 0x0A
+#define IPDSFIELD_DSCP_AF12 0x0C
+#define IPDSFIELD_DSCP_AF13 0x0E
+#define IPDSFIELD_DSCP_AF21 0x12
+#define IPDSFIELD_DSCP_AF22 0x14
+#define IPDSFIELD_DSCP_AF23 0x16
+#define IPDSFIELD_DSCP_AF31 0x1A
+#define IPDSFIELD_DSCP_AF32 0x1C
+#define IPDSFIELD_DSCP_AF33 0x1E
+#define IPDSFIELD_DSCP_AF41 0x22
+#define IPDSFIELD_DSCP_AF42 0x24
+#define IPDSFIELD_DSCP_AF43 0x26
+#define IPDSFIELD_ECT_MASK 0x02
+#define IPDSFIELD_CE_MASK 0x01
+#define IPDSFIELD_DSCP_EF 0x2E
+
+
+int dscp [] =
+ {
+ // IPDSFIELD_DSCP_DEFAULT ,
+ IPDSFIELD_DSCP_CS1 ,
+ IPDSFIELD_DSCP_CS2 ,
+ IPDSFIELD_DSCP_CS3 ,
+ IPDSFIELD_DSCP_CS4 ,
+ IPDSFIELD_DSCP_CS5 ,
+ IPDSFIELD_DSCP_CS6 ,
+ IPDSFIELD_DSCP_CS7 ,
+ IPDSFIELD_DSCP_AF11 ,
+ IPDSFIELD_DSCP_AF12 ,
+ IPDSFIELD_DSCP_AF13 ,
+ IPDSFIELD_DSCP_AF21 ,
+ IPDSFIELD_DSCP_AF22 ,
+ IPDSFIELD_DSCP_AF23 ,
+ IPDSFIELD_DSCP_AF31 ,
+ IPDSFIELD_DSCP_AF32 ,
+ IPDSFIELD_DSCP_AF33 ,
+ IPDSFIELD_DSCP_AF41 ,
+ IPDSFIELD_DSCP_AF42 ,
+ IPDSFIELD_DSCP_AF43 ,
+ IPDSFIELD_DSCP_EF
+ };
+
+const char *dscp_char[]=
+ {
+ //"Normal",
+ "CS1",
+ "CS2",
+ "CS3",
+ "CS4",
+ "CS5",
+ "CS6",
+ "CS7",
+ "Assured Forwarding 11",
+ "Assured Forwarding 12",
+ "Assured Forwarding 13",
+ "Assured Forwarding 21",
+ "Assured Forwarding 22",
+ "Assured Forwarding 23",
+ "Assured Forwarding 31",
+ "Assured Forwarding 32",
+ "Assured Forwarding 33",
+ "Assured Forwarding 41",
+ "Assured Forwarding 42",
+ "Assured Forwarding 43",
+ "Expedited Forwarding"
+ };
+
+
+TAO_Linear_Network_Priority_Mapping::TAO_Linear_Network_Priority_Mapping (long policy)
+ :policy_ (policy)
+{
+ this->min_ = 0; //ACE_Sched_Params::priority_min (this->policy_);
+ this->max_ = 32767; //ACE_Sched_Params::priority_max (this->policy_);
+
+ if (TAO_debug_level)
+ ACE_DEBUG ((LM_DEBUG,
+ "Min = %d\n Max = %d\n",
+ this->min_,
+ this->max_));
+ this->increment_ = (((this->max_ - this->min_) + 1) / 20) + 1;
+}
+
+TAO_Linear_Network_Priority_Mapping::~TAO_Linear_Network_Priority_Mapping (void)
+{
+}
+
+CORBA::Boolean
+TAO_Linear_Network_Priority_Mapping::to_network (RTCORBA::Priority corba_priority,
+ RTCORBA::NetworkPriority &network_priority)
+{
+ network_priority = dscp [(corba_priority - this->min_) / this->increment_];
+ if (TAO_debug_level)
+ ACE_DEBUG ((LM_DEBUG,
+ "TAO_Linear_Network_Priority_Mapping::to_network = %x increment = %d\n",
+ network_priority,
+ this->increment_));
+ return 1;
+}
+
+CORBA::Boolean
+TAO_Linear_Network_Priority_Mapping::to_CORBA (RTCORBA::NetworkPriority /*network_priority*/,
+ RTCORBA::Priority &/*corba_priority*/)
+{
+ if (TAO_debug_level)
+ ACE_DEBUG ((LM_DEBUG,
+ "TAO_Linear_Network_Priority_Mapping::to_corba\n"));
+ return 1;
+}