YARP
Yet Another Robot Platform
QosStyle.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 #ifndef YARP_OS_QOSSTYLE_H
7 #define YARP_OS_QOSSTYLE_H
8 
9 #include <yarp/os/api.h>
10 #include <yarp/conf/numeric.h>
11 
12 #include <string>
13 
14 namespace yarp {
15 namespace os {
16 
24 {
25 public:
31  {
32  PacketPriorityInvalid = -1,
33  PacketPriorityNormal = 0,
34  PacketPriorityLow = 10,
35  PacketPriorityHigh = 36,
36  PacketPriorityCritical = 44,
37  PacketPriorityUndefined = 0x7FFF
38  };
39 
40 
46  {
47  DSCP_Invalid = -1,
48  DSCP_CS0 = 0,
49  DSCP_CS1 = 8,
50  DSCP_CS2 = 16,
51  DSCP_CS3 = 24,
52  DSCP_CS4 = 32,
53  DSCP_CS5 = 40,
54  DSCP_CS6 = 48,
55  DSCP_CS7 = 56,
56  DSCP_AF11 = 10,
57  DSCP_AF12 = 12,
58  DSCP_AF13 = 14,
59  DSCP_AF21 = 18,
60  DSCP_AF22 = 20,
61  DSCP_AF23 = 22,
62  DSCP_AF31 = 26,
63  DSCP_AF32 = 28,
64  DSCP_AF33 = 30,
65  DSCP_AF41 = 34,
66  DSCP_AF42 = 36,
67  DSCP_AF43 = 38,
68  DSCP_VA = 44,
69  DSCP_EF = 46,
70  DSCP_Undefined = 0x7FFF
71  };
72 
73 
77  explicit QosStyle();
78 
79 
84  void setPacketPriorityByDscp(PacketPriorityDSCP dscp);
85 
86 
91  void setPacketPriorityByLevel(PacketPriorityLevel level);
92 
93 
98  void setPacketPrioritybyTOS(int tos)
99  {
100  packetPriority = tos;
101  }
102 
103 
121  bool setPacketPriority(const std::string& priority);
122 
123 
128  void setThreadPriority(int priority)
129  {
130  threadPriority = priority;
131  }
132 
133 
138  void setThreadPolicy(int policy)
139  {
140  threadPolicy = policy;
141  }
142 
143 
149  {
150  return packetPriority;
151  }
152 
153 
158  PacketPriorityDSCP getPacketPriorityAsDSCP() const;
159 
160 
165  PacketPriorityLevel getPacketPriorityAsLevel() const;
166 
167 
172  int getThreadPriority() const
173  {
174  return threadPriority;
175  }
176 
177 
182  int getThreadPolicy() const
183  {
184  return threadPolicy;
185  }
186 
187 
193  static PacketPriorityDSCP getDSCPByVocab(yarp::conf::vocab32_t vocab);
194 
195 
201  static PacketPriorityLevel getLevelByVocab(yarp::conf::vocab32_t vocab);
202 
203 
204 private:
205  int threadPriority;
206  int threadPolicy;
207  int packetPriority;
208 };
209 
210 } // namespace os
211 } // namespace yarp
212 
213 #endif // YARP_OS_QOSSTYLE_H
Preferences for the port's Quality of Service.
Definition: QosStyle.h:24
int getThreadPolicy() const
returns the communication thread scheduling policy
Definition: QosStyle.h:182
void setThreadPriority(int priority)
sets the communication thread priority level
Definition: QosStyle.h:128
PacketPriorityDSCP
The PacketPriorityDSCP defines the packets quality of service (priority) using DSCP.
Definition: QosStyle.h:46
void setPacketPrioritybyTOS(int tos)
sets the packet priority given as TOS value
Definition: QosStyle.h:98
int getPacketPriorityAsTOS() const
returns the packet TOS value
Definition: QosStyle.h:148
int getThreadPriority() const
returns the communication thread priority level
Definition: QosStyle.h:172
void setThreadPolicy(int policy)
sets the communication thread scheduling policy
Definition: QosStyle.h:138
PacketPriorityLevel
The PacketPriorityLevel defines the packets quality of service (priority) levels.
Definition: QosStyle.h:31
std::int32_t vocab32_t
Definition: numeric.h:78
The main, catch-all namespace for YARP.
Definition: dirs.h:16
#define YARP_os_API
Definition: api.h:18