• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

src/hpp/dds/sub/status/ReaderState.hpp

Go to the documentation of this file.
00001 #ifndef OMG_DDS_SUB_READERSTATE_HPP_
00002 #define OMG_DDS_SUB_READERSTATE_HPP_
00003 
00004 /* Copyright 2010, Object Management Group, Inc.
00005  * Copyright 2010, PrismTech, Corp.
00006  * Copyright 2010, Real-Time Innovations, Inc.
00007  * All rights reserved.
00008  *
00009  * Licensed under the Apache License, Version 2.0 (the "License");
00010  * you may not use this file except in compliance with the License.
00011  * You may obtain a copy of the License at
00012  *
00013  *     http://www.apache.org/licenses/LICENSE-2.0
00014  *
00015  * Unless required by applicable law or agreed to in writing, software
00016  * distributed under the License is distributed on an "AS IS" BASIS,
00017  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00018  * See the License for the specific language governing permissions and
00019  * limitations under the License.
00020  */
00021 
00022 #include <bitset>
00023 
00024 #include <dds/core/types.hpp>
00025 #include <dds/sub/subfwd.hpp>
00026 
00027 
00028 namespace dds { namespace sub { namespace status {
00029 
00030 
00031 class SampleState : public std::bitset<OMG_DDS_STATE_BIT_COUNT> {
00032 public:
00033     typedef std::bitset<OMG_DDS_STATE_BIT_COUNT> MaskType;
00034 
00035 public:
00036     SampleState() : MaskType() { }
00037     SampleState(const SampleState& src) : MaskType(src) { }
00038     SampleState(const MaskType& src) : MaskType(src) { }
00039 
00040 public:
00041     inline static const SampleState read() {
00042         return SampleState(0x0001 << 0u);
00043     }
00044 
00045     inline static const SampleState not_read() {
00046         return SampleState(0x0001 << 1u);
00047     }
00048 
00049     inline static const SampleState any() {
00050         return SampleState(~0u);
00051     }
00052 
00053 private:
00054     SampleState(uint32_t i) : MaskType(i) { }
00055 };
00056 
00057 
00058 class ViewState : public std::bitset<OMG_DDS_STATE_BIT_COUNT> {
00059 public:
00060     typedef std::bitset<OMG_DDS_STATE_BIT_COUNT> MaskType;
00061 
00062 public:
00063     ViewState() : MaskType() { }
00064     ViewState(const ViewState& src) : MaskType(src) { }
00065     ViewState(const MaskType& src) : MaskType(src) { }
00066 
00067 public:
00068     inline static const ViewState new_view() {
00069         return ViewState(0x0001 << 0u);
00070     }
00071 
00072     inline static const ViewState not_new_view() {
00073         return ViewState(0x0001 << 1u);
00074     }
00075 
00076     inline static const ViewState any() {
00077         return ViewState(~0u);
00078     }
00079 private:
00080     ViewState(uint32_t m) : MaskType(m) { }
00081 
00082 };
00083 
00084 
00085 class InstanceState : public std::bitset<OMG_DDS_STATE_BIT_COUNT> {
00086 public:
00087     typedef std::bitset<OMG_DDS_STATE_BIT_COUNT> MaskType;
00088 
00089 public:
00090     InstanceState() : MaskType() { }
00091     InstanceState(const InstanceState& src) : MaskType(src) { }
00092     InstanceState(const MaskType& src) : MaskType(src) { }
00093 
00094 public:
00095     inline static const InstanceState alive() {
00096         return InstanceState(0x0001 << 0u);
00097     }
00098 
00099     inline static const InstanceState not_alive_disposed() {
00100         return InstanceState(0x0001 << 1u);
00101     }
00102 
00103     inline static const InstanceState not_alive_no_writers() {
00104         return InstanceState(0x0001 << 2u);
00105     }
00106 
00107     inline static const InstanceState not_alive_mask() {
00108         return not_alive_disposed() | not_alive_no_writers();
00109     }
00110 
00111     inline static const InstanceState any() {
00112         return InstanceState(~0u);
00113     }
00114 private:
00115     InstanceState(uint32_t m) : MaskType(m) { }
00116 
00117 };
00118 
00119 class ReaderState {
00120 public:
00121         ReaderState();
00122 
00123         /* implicit */ ReaderState(const dds::sub::status::SampleState& ss)
00124         : ss_(ss),
00125       vs_(dds::sub::status::ViewState::any()),
00126       is_(dds::sub::status::InstanceState::any())
00127         { }
00128 
00129         /* implicit */ ReaderState(const dds::sub::status::ViewState& vs)
00130         : ss_(dds::sub::status::SampleState::any()),
00131       vs_(vs),
00132       is_(dds::sub::status::InstanceState::any())
00133         { }
00134     
00135         /* implicit */ ReaderState(const dds::sub::status::InstanceState& is)
00136         : ss_(dds::sub::status::SampleState::any()),
00137       vs_(dds::sub::status::ViewState::any()),
00138       is_(is)
00139         { }
00140     
00141         ReaderState(const dds::sub::status::SampleState& ss,
00142                         const dds::sub::status::ViewState& vs,
00143                         const dds::sub::status::InstanceState& is)
00144         : ss_(ss), vs_(vs), is_(is)
00145         { }
00146 
00147         ReaderState& operator << (const dds::sub::status::SampleState& ss) {
00148                 ss_ = ss;
00149                 return *this;
00150         }
00151         ReaderState& operator << (const dds::sub::status::InstanceState& is) {
00152                 is_ = is;
00153                 return *this;
00154         }
00155         ReaderState& operator << (const dds::sub::status::ViewState& vs) {
00156                 vs_ = vs;
00157                 return *this;
00158         }
00159 
00160         const ReaderState& operator >> (dds::sub::status::SampleState& ss) const {
00161                 ss = ss_;
00162                 return *this;
00163         }
00164 
00165         const ReaderState& operator >> (dds::sub::status::InstanceState& is) const {
00166                 is = is_;
00167                 return *this;
00168         }
00169 
00170         const ReaderState& operator >> (dds::sub::status::ViewState& vs) const {
00171                 vs = vs_;
00172                 return *this;
00173         }
00174 
00175         const dds::sub::status::SampleState& sample_state() const {
00176                 return ss_;
00177         }
00178 
00179         const void sample_state(const dds::sub::status::SampleState& ss) {
00180                 *this << ss;
00181         }
00182 
00183         const dds::sub::status::InstanceState& instance_state() const{
00184                 return is_;
00185         }
00186         void instance_state(const dds::sub::status::InstanceState& is) {
00187                 *this << is;
00188         }
00189 
00190         const dds::sub::status::ViewState& view_state() const {
00191                 return vs_;
00192         }
00193         void view_state(const dds::sub::status::ViewState& vs) {
00194                 *this << vs;
00195         }
00196 
00197         static ReaderState any() {
00198                 return ReaderState(dds::sub::status::SampleState::any(),
00199                                 dds::sub::status::ViewState::any(),
00200                                 dds::sub::status::InstanceState::any());
00201         }
00202 
00203         static ReaderState new_data() {
00204                 return ReaderState(dds::sub::status::SampleState::not_read(),
00205                                 dds::sub::status::ViewState::any(),
00206                                 dds::sub::status::InstanceState::alive());
00207         }
00208 
00209         static ReaderState any_data() {
00210                         return ReaderState(dds::sub::status::SampleState::any(),
00211                                         dds::sub::status::ViewState::any(),
00212                                         dds::sub::status::InstanceState::alive());
00213                 }
00214 
00215         static ReaderState new_instance() {
00216                 return ReaderState(dds::sub::status::SampleState::any(),
00217                                 dds::sub::status::ViewState::new_view(),
00218                                 dds::sub::status::InstanceState::alive());
00219         }
00220 private:
00221         dds::sub::status::SampleState ss_;
00222         dds::sub::status::ViewState vs_;
00223         dds::sub::status::InstanceState is_;
00224 
00225 };
00226 
00227 } } }
00228 
00229 
00230 #endif /* OMG_DDS_SUB_READERSTATE_HPP_ */

Generated on Tue Nov 9 2010 02:16:21 for dds-psm-cxx-doc by  doxygen 1.7.1