OpenSplice ISO C++ 2 DCPS  v6.x
ISO C++ 2 OpenSplice Data Distribution Service Data-Centric Publish-Subscribe API
DataWriter.hpp
Go to the documentation of this file.
1 #ifndef OMG_DDS_PUB_DATA_WRITER_HPP_
2 #define OMG_DDS_PUB_DATA_WRITER_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 
23 #include <dds/topic/Topic.hpp>
25 #include <dds/pub/Publisher.hpp>
27 
29 
31 namespace dds
32 {
33 namespace pub
34 {
35 template <typename T,
36  template <typename Q> class DELEGATE = dds::pub::detail::DataWriter >
37 class DataWriter;
38 
39 template <typename T> class DataWriterListener;
40 }
41 }
87 template <typename T>
89 {
90 
91 public:
96 
97 public:
100 
101 public:
102 
126  DataWriter(const dds::pub::Publisher& pub,
127  const ::dds::topic::Topic<T>& topic);
128 
193  DataWriter(const dds::pub::Publisher& pub,
194  const ::dds::topic::Topic<T>& topic,
198 
199 public:
201  virtual ~DataWriter();
205 public:
206  //==========================================================================
207  //== Write API
208 
258  void write(const T& sample);
259 
298  void write(const T& sample, const dds::core::Time& timestamp);
299 
362  void write(const T& sample, const ::dds::core::InstanceHandle& instance);
363 
408  void write(const T& data,
409  const ::dds::core::InstanceHandle& instance,
410  const dds::core::Time& timestamp);
411 
412 
453  void write(const dds::topic::TopicInstance<T>& i);
454 
499  void write(const dds::topic::TopicInstance<T>& i,
500  const dds::core::Time& timestamp);
501 
550  template <typename FWIterator>
551  void write(const FWIterator& begin, const FWIterator& end);
552 
603  template <typename FWIterator>
604  void write(const FWIterator& begin, const FWIterator& end,
605  const dds::core::Time& timestamp);
606 
651  template <typename SamplesFWIterator, typename HandlesFWIterator>
652  void write(const SamplesFWIterator& data_begin,
653  const SamplesFWIterator& data_end,
654  const HandlesFWIterator& handle_begin,
655  const HandlesFWIterator& handle_end);
656 
703  template <typename SamplesFWIterator, typename HandlesFWIterator>
704  void write(const SamplesFWIterator& data_begin,
705  const SamplesFWIterator& data_end,
706  const HandlesFWIterator& handle_begin,
707  const HandlesFWIterator& handle_end,
708  const dds::core::Time& timestamp);
709 
710 
712  DataWriter& operator << (const T& data);
713 
715  DataWriter& operator << (const std::pair<T, dds::core::Time>& data);
716 
718  DataWriter& operator << (const std::pair<T, ::dds::core::InstanceHandle>& data);
719 
724  DataWriter& operator <<(DataWriter & (*manipulator)(DataWriter&));
727  //==========================================================================
728  //== Instance Management
729 
794  const ::dds::core::InstanceHandle register_instance(const T& key);
795 
847  const ::dds::core::InstanceHandle register_instance(const T& key,
848  const dds::core::Time& timestamp);
849 
930  DataWriter& unregister_instance(const ::dds::core::InstanceHandle& i);
931 
981  DataWriter& unregister_instance(const ::dds::core::InstanceHandle& i,
982  const dds::core::Time& timestamp);
983 
1035  DataWriter& unregister_instance(const T& key);
1036 
1090  DataWriter& unregister_instance(const T& key,
1091  const dds::core::Time& timestamp);
1092 
1196  DataWriter& dispose_instance(const ::dds::core::InstanceHandle& i);
1197 
1250  DataWriter& dispose_instance(const ::dds::core::InstanceHandle& i,
1251  const dds::core::Time& timestamp);
1252 
1300  DataWriter& dispose_instance(const T& key);
1301 
1350  DataWriter& dispose_instance(const T& key,
1351  const dds::core::Time& timestamp);
1352 
1353 #ifdef DOXYGEN_FOR_ISOCPP2
1354  /*
1355  * The above macro is never (and must never) be defined in normal compilation.
1356  *
1357  * The following code is for documenting proprietary API only.
1358  */
1359 
1414  void writedispose(const T& sample);
1415 
1471  void writedispose(const T& sample,
1472  const dds::core::Time& timestamp);
1473 
1534  void writedispose(const T& sample,
1536 
1599  void writedispose(const T& sample,
1601  const dds::core::Time& timestamp);
1602 
1664 
1728  const dds::core::Time& timestamp);
1729 
1789  template <typename FWIterator>
1790  void writedispose(const FWIterator& begin,
1791  const FWIterator& end);
1792 
1854  template <typename FWIterator>
1855  void writedispose(const FWIterator& begin,
1856  const FWIterator& end,
1857  const dds::core::Time& timestamp);
1858 
1918  template <typename SamplesFWIterator, typename HandlesFWIterator>
1919  void writedispose(const SamplesFWIterator& data_begin,
1920  const SamplesFWIterator& data_end,
1921  const HandlesFWIterator& handle_begin,
1922  const HandlesFWIterator& handle_end);
1923 
1985  template <typename SamplesFWIterator, typename HandlesFWIterator>
1986  void writedispose(const SamplesFWIterator& data_begin,
1987  const SamplesFWIterator& data_end,
1988  const HandlesFWIterator& handle_begin,
1989  const HandlesFWIterator& handle_end,
1990  const dds::core::Time& timestamp);
1991 
1992 #endif /* DOXYGEN_FOR_ISOCPP2 */
1993 
2026  const ::dds::core::InstanceHandle& h);
2027 
2059  T& key_value(T& sample, const ::dds::core::InstanceHandle& h);
2060 
2085 
2086  //==========================================================================
2087  //== QoS Management
2088 
2090  DataWriter& operator <<(const ::dds::pub::qos::DataWriterQos& qos);
2091 
2092 
2093  //==========================================================================
2094  //== Entity Navigation
2095 
2107  const dds::topic::Topic<T>& topic() const;
2108 
2109  //==========================================================================
2110  //== Listeners Management
2111 
2189  const ::dds::core::status::StatusMask& mask);
2190 
2201 };
2202 
2203 #endif /* OMG_DDS_PUB_DATA_WRITER_HPP_ */
DataWriter allows the application to set the value of the sample to be published under a given Topic...
Definition: DataWriter.hpp:88
static StatusMask none()
Definition: State.hpp:205
DataWriter & operator<<(const T &data)
#define OMG_DDS_IMPLICIT_REF_BASE(TYPE)
Definition: refmacros.hpp:70
const ::dds::core::InstanceHandle register_instance(const T &key)
DataWriter & unregister_instance(const ::dds::core::InstanceHandle &i)
dds::pub::DataWriterListener< T > Listener
Definition: DataWriter.hpp:95
A TopicInstance encapsulates a dds::sub::Sample and its associated dds::core::InstanceHandle.
Topic is the most basic description of the data to be published and subscribed.
Definition: Topic.hpp:36
void write(const T &sample)
dds::topic::TopicInstance< T > & key_value(dds::topic::TopicInstance< T > &i, const ::dds::core::InstanceHandle &h)
Class to hold the handle associated with in sample instance.
void writedispose(const T &sample)
Definition: array.hpp:23
Typeless base class for the typed DataWriter.
#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
DataWriter events Listener.
DataWriter(const dds::pub::Publisher &pub, const ::dds::topic::Topic< T > &topic)
DataWriterListener< T > * listener() const
dds::core::InstanceHandle lookup_instance(const T &key)
This object provides the basic mechanism for an application to specify Quality of Service attributes ...
const dds::topic::Topic< T > & topic() const
The Publisher acts on the behalf of one or several DataWriter objects that belong to it...
Definition: Publisher.hpp:55
dds::pub::qos::DataWriterQos qos() const
dds::sub::functors::InstanceManipulatorFunctor instance(const dds::core::InstanceHandle &h)
DataWriter & dispose_instance(const ::dds::core::InstanceHandle &i)