Fast DDS  Version 3.1.0
Fast DDS
Loading...
Searching...
No Matches
StatusMask.hpp
1/*
2 * Copyright 2010, Object Management Group, Inc.
3 * Copyright 2010, PrismTech, Corp.
4 * Copyright 2010, Real-Time Innovations, Inc.
5 * Copyright 2019, Proyectos y Sistemas de Mantenimiento SL (eProsima).
6 * All rights reserved.
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21#ifndef FASTDDS_DDS_CORE_STATUS__STATUSMASK_HPP
22#define FASTDDS_DDS_CORE_STATUS__STATUSMASK_HPP
23
24#include <fastdds/fastdds_dll.hpp>
25
26#include <bitset>
27#include <cstdint>
28#include <sstream>
29
31#define FASTDDS_STATUS_COUNT size_t(16)
32
33namespace eprosima {
34namespace fastdds {
35namespace dds {
36
47class FASTDDS_EXPORTED_API StatusMask : public std::bitset<FASTDDS_STATUS_COUNT>
48{
49public:
50
54 typedef std::bitset<FASTDDS_STATUS_COUNT> MaskType;
55
60 : std::bitset<FASTDDS_STATUS_COUNT>()
61 {
62 }
63
69 explicit StatusMask(
70 uint32_t mask)
71 : std::bitset<FASTDDS_STATUS_COUNT>(mask)
72 {
73 }
74
80 inline StatusMask& operator <<(
81 const StatusMask& mask)
82 {
83 *this |= mask;
84 return *this;
85 }
86
92 inline StatusMask& operator >>(
93 const StatusMask& mask)
94 {
95 *this &= ~mask;
96 return *this;
97 }
98
104 inline static StatusMask all()
105 {
106 return StatusMask(0x80007fe7u);
107 }
108
114 inline static StatusMask none()
115 {
116 return StatusMask(0u);
117 }
118
119public:
120
127 {
128 return StatusMask(0x00000001 << 0u);
129 }
130
137 {
138 return StatusMask(0x00000001 << 1u);
139 }
140
147 {
148 return StatusMask(0x00000001 << 2u);
149 }
150
157 {
158 return StatusMask(0x00000001 << 5u);
159 }
160
167 {
168 return StatusMask(0x00000001 << 6u);
169 }
170
176 inline static StatusMask sample_lost()
177 {
178 return StatusMask(0x00000001 << 7u);
179 }
180
187 {
188 return StatusMask(0x00000001 << 8u);
189 }
190
197 {
198 return StatusMask(0x00000001 << 9u);
199 }
200
207 {
208 return StatusMask(0x00000001 << 10u);
209 }
210
217 {
218 return StatusMask(0x00000001 << 11u);
219 }
220
227 {
228 return StatusMask(0x00000001 << 12u);
229 }
230
237 {
238 return StatusMask(0x00000001 << 13u);
239 }
240
247 {
248 return StatusMask(0x00000001 << 14u);
249 }
250
257 StatusMask status) const
258 {
259 MaskType r = *this & status;
260 return r == status;
261 }
262
263};
264
265} //namespace dds
266} //namespace fastdds
267} //namespace eprosima
268
269
270#endif //FASTDDS_DDS_CORE_STATUS__STATUSMASK_HPP
StatusMask is a bitmap or bitset field.
Definition StatusMask.hpp:48
static StatusMask subscription_matched()
Get the statusmask associated with dds::core::status::SubscriptionMatchedStatus.
Definition StatusMask.hpp:246
static StatusMask requested_incompatible_qos()
Get the StatusMask associated with dds::core::status::RequestedIncompatibleQosStatus.
Definition StatusMask.hpp:166
static StatusMask inconsistent_topic()
Get the StatusMask associated with dds::core::status::InconsistentTopicStatus.
Definition StatusMask.hpp:126
std::bitset< FASTDDS_STATUS_COUNT > MaskType
Convenience typedef for std::bitset<FASTDDS_STATUS_COUNT>.
Definition StatusMask.hpp:54
static StatusMask sample_lost()
Get the StatusMask associated with dds::core::status::SampleLostStatus.
Definition StatusMask.hpp:176
static StatusMask none()
Get no StatusMasks.
Definition StatusMask.hpp:114
bool is_active(StatusMask status) const
Checks if the status passed as parameter is 1 in the actual StatusMask.
Definition StatusMask.hpp:256
static StatusMask all()
Get all StatusMasks.
Definition StatusMask.hpp:104
static StatusMask sample_rejected()
Get the StatusMask associated with dds::core::status::SampleRejectedStatus.
Definition StatusMask.hpp:186
static StatusMask offered_deadline_missed()
Get the StatusMask associated with dds::core::status::OfferedDeadlineMissedStatus.
Definition StatusMask.hpp:136
static StatusMask liveliness_changed()
Get the StatusMask associated with dds::core::status::LivelinessChangedStatus.
Definition StatusMask.hpp:226
static StatusMask data_on_readers()
Get the StatusMask associated with dds::core::status::data_on_readers.
Definition StatusMask.hpp:196
StatusMask(uint32_t mask)
Construct an StatusMask with an uint32_t bit mask.
Definition StatusMask.hpp:69
static StatusMask liveliness_lost()
Get the StatusMask associated with dds::core::status::LivelinessLostStatus.
Definition StatusMask.hpp:216
StatusMask()
Construct an StatusMask with no flags set.
Definition StatusMask.hpp:59
static StatusMask publication_matched()
Get the statusmask associated with dds::core::status::PublicationMatchedStatus.
Definition StatusMask.hpp:236
static StatusMask data_available()
get the statusmask associated with dds::core::status::data_available
Definition StatusMask.hpp:206
static StatusMask requested_deadline_missed()
Get the StatusMask associated with dds::core::status::RequestedDeadlineMissedStatus.
Definition StatusMask.hpp:146
static StatusMask offered_incompatible_qos()
Get the StatusMask associated with dds::core::status::OfferedIncompatibleQosStatus.
Definition StatusMask.hpp:156
Definition DomainParticipant.hpp:45
eProsima namespace.
Definition EntityId_t.hpp:388