OpenSplice ISO C++ 2 DCPS  v6.x
ISO C++ 2 OpenSplice Data Distribution Service Data-Centric Publish-Subscribe API
DataReader.hpp
Go to the documentation of this file.
1 #ifndef OMG_DDS_SUB_TDATA_READER_HPP_
2 #define OMG_DDS_SUB_TDATA_READER_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  */
26 #include <dds/sub/Subscriber.hpp>
27 
28 
29 namespace dds
30 {
31 namespace sub
32 {
33 template <typename T>
34 class DataReader;
35 
36 template <typename T>
38 }
39 }
40 
104 template <typename T>
106 {
107 
108 public:
112  typedef ::dds::sub::DataReaderListener<T> Listener;
113 
114 public:
115 
163  class Selector
164  {
165  public:
171  Selector(DataReader& dr);
172 
195 
239 
263 
286  Selector& content(const dds::sub::Query& query);
287 
307  Selector& max_samples(uint32_t maxsamples);
308 
328 
348 
349  // --- Forward Iterators: --- //
370  template <typename SamplesFWIterator>
371  uint32_t
372  read(SamplesFWIterator sfit, uint32_t max_samples);
373 
394  template <typename SamplesFWIterator>
395  uint32_t
396  take(SamplesFWIterator sfit, uint32_t max_samples);
397 
398  // --- Back-Inserting Iterators: --- //
418  template <typename SamplesBIIterator>
419  uint32_t
420  read(SamplesBIIterator sbit);
421 
441  template <typename SamplesBIIterator>
442  uint32_t
443  take(SamplesBIIterator sbit);
444 
445  private:
446  typename DELEGATE<T>::Selector impl_;
447  };
448 
509  {
510  public:
520 
530  bool read_mode();
531 
566  void read_mode(bool readmode);
567 
589  ManipulatorSelector& max_samples(uint32_t n);
590 
615 
661 
687 
713 
733 
753 
771  template <typename Functor>
773  operator >> (Functor f);
774 
775  private:
776  typename DELEGATE<T>::ManipulatorSelector impl_;
777 
778  };
779 
780 public:
783 
784 public:
810  DataReader(const dds::sub::Subscriber& sub,
811  const ::dds::topic::Topic<T>& topic);
812 
870  DataReader(const dds::sub::Subscriber& sub,
871  const ::dds::topic::Topic<T>& topic,
875 
876  #ifdef OMG_DDS_CONTENT_SUBSCRIPTION_SUPPORT
877 
879  DataReader(const dds::sub::Subscriber& sub,
880  const ::dds::topic::ContentFilteredTopic<T>& topic);
881 
883  DataReader(const dds::sub::Subscriber& sub,
884  const ::dds::topic::ContentFilteredTopic<T>& topic,
885  const dds::sub::qos::DataReaderQos& qos,
888  #endif /* OMG_DDS_CONTENT_SUBSCRIPTION_SUPPORT */
889 
890  #ifdef OMG_DDS_MULTI_TOPIC_SUPPORT
891 
893  DataReader(const dds::sub::Subscriber& sub,
894  const ::dds::topic::MultiTopic<T>& topic);
895 
897  DataReader(const dds::sub::Subscriber& sub,
898  const ::dds::topic::MultiTopic<T>& topic,
899  const dds::sub::qos::DataReaderQos& qos,
902 
903  #endif /* OMG_DDS_MULTI_TOPIC_SUPPORT */
904 
905 public:
907  virtual ~DataReader();
910 public:
911  // == ReadState Management
912 
922 
937 
938  //== Streaming read/take
939 
1040 
1044 
1046  template <typename Functor>
1048  operator>> (Functor f);
1049 
1050 
1052 public:
1053  //== Loan Read/Take API ==================================================
1054 
1130 
1195 
1196  //== Copy Read/Take API ==================================================
1197 
1198  // --- Forward Iterators: --- //
1199 
1258  template <typename SamplesFWIterator>
1259  uint32_t
1260  read(SamplesFWIterator sfit,
1261  uint32_t max_samples);
1262 
1321  template <typename SamplesFWIterator>
1322  uint32_t
1323  take(SamplesFWIterator sfit,
1324  uint32_t max_samples);
1325 
1326 
1327  // --- Back-Inserting Iterators: --- //
1328 
1387  template <typename SamplesBIIterator>
1388  uint32_t
1389  read(SamplesBIIterator sbit);
1390 
1449  template <typename SamplesBIIterator>
1450  uint32_t
1451  take(SamplesBIIterator sbit);
1452 public:
1453  //========================================================================
1454  //== DSL Method for dealing with instances, content and status filters.
1455 
1506  Selector select();
1507 
1508  //========================================================================
1509  //== Instance Management
1510 public:
1540 
1572  T& key_value(T& sample, const dds::core::InstanceHandle& h);
1573 
1596  lookup_instance(const T& key) const;
1597 
1598 public:
1599 
1691  void listener(Listener* listener,
1692  const dds::core::status::StatusMask& event_mask);
1693 
1703  Listener* listener() const;
1704 
1705 };
1706 
1707 
1708 #endif /* OMG_DDS_SUB_TDATA_READER_HPP_ */
DataReader events Listener.
Definition: DataReader.hpp:37
dds::sub::status::DataState default_filter_state()
Listener * listener() const
A Subscriber is the object responsible for the actual reception of the data resulting from its subscr...
Definition: Subscriber.hpp:53
static StatusMask none()
Definition: State.hpp:205
#define OMG_DDS_IMPLICIT_REF_BASE(TYPE)
Definition: refmacros.hpp:70
DataReader & operator>>(dds::sub::LoanedSamples< T > &ls)
dds::topic::TopicInstance< T > key_value(const dds::core::InstanceHandle &h)
A TopicInstance encapsulates a dds::sub::Sample and its associated dds::core::InstanceHandle.
This class provides the basic mechanism for an application to specify Quality of Service attributes f...
Selector & content(const dds::sub::Query &query)
Selector & max_samples(uint32_t maxsamples)
Query objects contain expressions that allow the application to specify a filter on the locally avail...
Definition: Query.hpp:61
dds::sub::LoanedSamples< T > take()
dds::sub::qos::DataReaderQos qos() const
DataReader allows the applicatin to access published sample data.
Definition: DataReader.hpp:34
Class to hold sample DataState information.
Definition: DataState.hpp:371
Typeless base class for the typed DataReader.
Selector & state(const dds::sub::status::DataState &state)
DataReader(const dds::sub::Subscriber &sub, const ::dds::topic::Topic< T > &topic)
Class to hold the handle associated with in sample instance.
dds::sub::LoanedSamples< T > read()
Selector & next_instance(const dds::core::InstanceHandle &handle)
Definition: array.hpp:23
Selector & instance(const dds::core::InstanceHandle &handle)
#define OMG_DDS_REF_TYPE_PROTECTED_DC_T(TYPE, BASE, T_PARAM, DELEGATE)
Definition: refmacros.hpp:166
StatusMask is a bitmap or bitset field.
Definition: State.hpp:144
This class encapsulates and automates the management of loaned samples.
const dds::core::InstanceHandle lookup_instance(const T &key) const
::dds::sub::DataReaderListener< T > Listener
Definition: DataReader.hpp:112