DDS-PSM-C++  1.0
ISO C++ API for OpenSplice DDS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
DataState.hpp
Go to the documentation of this file.
1 #ifndef OMG_DDS_SUB_DATA_STATE_HPP_
2 #define OMG_DDS_SUB_DATA_STATE_HPP_
3 
4 /* Copyright 2010, Object Management Group, Inc.
5  * Copyright 2010, PrismTech, Corp.
6  * Copyright 2010, Real-Time Innovations, Inc.
7  * All rights reserved.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21 
22 #include <bitset>
23 
24 #include <dds/core/types.hpp>
25 
26 
27 namespace dds {
28  namespace sub {
29  namespace status {
30  class SampleState;
31  }
32  }
33 }
34 
35 
36 class dds::sub::status::SampleState : public std::bitset<OMG_DDS_STATE_BIT_COUNT> {
37 public:
38  typedef std::bitset<OMG_DDS_STATE_BIT_COUNT> MaskType;
39 
40 public:
41  SampleState();
42  explicit SampleState(uint32_t i);
43  SampleState(const SampleState& src);
44  SampleState(const MaskType& src);
45 
46 public:
47  inline static const SampleState read();
48 
49  inline static const SampleState not_read();
50 
51  inline static const SampleState any();
52 
53 };
54 
55 
56 class ViewState : public std::bitset<OMG_DDS_STATE_BIT_COUNT> {
57 public:
58  typedef std::bitset<OMG_DDS_STATE_BIT_COUNT> MaskType;
59 
60 public:
61  ViewState();
62  explicit ViewState(uint32_t m);
63  ViewState(const ViewState& src);
64  ViewState(const MaskType& src);
65 
66 public:
67  inline static const ViewState new_view();
68 
69  inline static const ViewState not_new_view();
70 
71  inline static const ViewState any();
72 
73 };
74 
75 
76 class InstanceState : public std::bitset<OMG_DDS_STATE_BIT_COUNT> {
77 public:
78  typedef std::bitset<OMG_DDS_STATE_BIT_COUNT> MaskType;
79 
80 public:
81  explicit InstanceState(uint32_t m);
82  InstanceState();
83  InstanceState(const InstanceState& src);
84  InstanceState(const MaskType& src);
85 
86 public:
87  inline static const InstanceState alive();
88 
89  inline static const InstanceState not_alive_disposed();
90 
91  inline static const InstanceState not_alive_no_writers();
92 
93  inline static const InstanceState not_alive_mask();
94 
95  inline static const InstanceState any();
96 
97 };
98 
99 class DataState {
100 public:
102  : ss_(dds::sub::status::SampleState::any()),
103  vs_(dds::sub::status::ViewState::any()),
104  is_(dds::sub::status::InstanceState::any())
105  { }
106 
107  /* implicit */ DataState(const dds::sub::status::SampleState& ss)
108  : ss_(ss),
109  vs_(dds::sub::status::ViewState::any()),
110  is_(dds::sub::status::InstanceState::any())
111  { }
112 
113  /* implicit */ DataState(const dds::sub::status::ViewState& vs)
114  : ss_(dds::sub::status::SampleState::any()),
115  vs_(vs),
116  is_(dds::sub::status::InstanceState::any())
117  { }
118 
119  /* implicit */ DataState(const dds::sub::status::InstanceState& is)
120  : ss_(dds::sub::status::SampleState::any()),
121  vs_(dds::sub::status::ViewState::any()),
122  is_(is)
123  { }
124 
126  const dds::sub::status::ViewState& vs,
127  const dds::sub::status::InstanceState& is)
128  : ss_(ss), vs_(vs), is_(is)
129  { }
130 
132  ss_ = ss;
133  return *this;
134  }
135  DataState& operator << (const dds::sub::status::InstanceState& is) {
136  is_ = is;
137  return *this;
138  }
139  DataState& operator << (const dds::sub::status::ViewState& vs) {
140  vs_ = vs;
141  return *this;
142  }
143 
145  ss = ss_;
146  return *this;
147  }
148 
149  const DataState& operator >> (dds::sub::status::InstanceState& is) const {
150  is = is_;
151  return *this;
152  }
153 
154  const DataState& operator >> (dds::sub::status::ViewState& vs) const {
155  vs = vs_;
156  return *this;
157  }
158 
160  return ss_;
161  }
162 
164  *this << ss;
165  }
166 
167  const dds::sub::status::InstanceState& instance_state() const{
168  return is_;
169  }
170  void instance_state(const dds::sub::status::InstanceState& is) {
171  *this << is;
172  }
173 
174  const dds::sub::status::ViewState& view_state() const {
175  return vs_;
176  }
177  void view_state(const dds::sub::status::ViewState& vs) {
178  *this << vs;
179  }
180 
181  static DataState any() {
183  dds::sub::status::ViewState::any(),
184  dds::sub::status::InstanceState::any());
185  }
186 
187  static DataState new_data() {
189  dds::sub::status::ViewState::any(),
190  dds::sub::status::InstanceState::alive());
191  }
192 
193  static DataState any_data() {
195  dds::sub::status::ViewState::any(),
196  dds::sub::status::InstanceState::alive());
197  }
198 
201  dds::sub::status::ViewState::new_view(),
202  dds::sub::status::InstanceState::alive());
203  }
204 private:
206  dds::sub::status::ViewState vs_;
207  dds::sub::status::InstanceState is_;
208 
209 };
210 
211 
212 
213 
214 #endif /* OMG_DDS_SUB_DATA_STATE_HPP_ */