OpenSplice ISO C++ 2 DCPS  v6.x
ISO C++ 2 OpenSplice Data Distribution Service Data-Centric Publish-Subscribe API
ProprietaryApi.hpp
Go to the documentation of this file.
1 /*
2  * Vortex OpenSplice
3  *
4  * This software and documentation are Copyright 2006 to 2021 ADLINK
5  * Technology Limited, its affiliated companies and licensors. All rights
6  * 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 OMG_DDS_CORE_DETAIL_PROPRIETARY_API_HPP_
22 #define OMG_DDS_CORE_DETAIL_PROPRIETARY_API_HPP_
23 
24 /*
25  * There are two parts in the IsoCpp API:
26  * - Specification API (include/dds)
27  * - Proprietary API (include/org)
28  * However, include/org mostly contains implementation details and only a small
29  * part is API for the application.
30  *
31  * There are basically two ways of including the proprietary API into the API
32  * documentation generated by doxygen.
33  *
34  * 1) Add include/org to the doxygen input directories and filter out the
35  * non-API information (see doxygen_isocpp2_*.cfg files)
36  * Advantage -
37  * Documentation is at the same place as the implementation.
38  * Disadvantage -
39  * The non-API filtering can be done by either changing the doxygen
40  * config files or adding cond/endcond tags all through the header
41  * files. Both will be quite cumbersome.
42  * 2) Add a header file to include/dds that contains the documentation for the
43  * proprietary part of the API.
44  * Advantage -
45  * Simple.
46  * Disadvantage -
47  * Documentation is in a different place as the implementation.
48  *
49  * Option 2 is choosen (obviously, because you're looking at that actual
50  * proprietary API documentation file).
51  */
52 
53 #ifdef DOXYGEN_FOR_ISOCPP2
54 /*
55  * The above macro is never (and must never) be defined in normal compilation.
56  *
57  * The following code is only for documentation purposes.
58  */
59 
60 
61 namespace org {
62 namespace opensplice {
63 
64 
65 
66 namespace topic {
67 
126  template <typename T>
128  {
129  public:
146  virtual void on_all_data_disposed(
147  dds::topic::Topic<T>& topic,
149  };
150 
170  template <typename T>
171  class NoOpTopicListener : public virtual TopicListener<T>
172  { };
173 
194  {
195  public:
197  virtual void on_all_data_disposed(
198  dds::topic::AnyTopic& topic,
200  };
201 
217  class NoOpAnyTopicListener : public virtual AnyTopicListener
218  { };
219 
220 
233  {
234  public:
235  const dds::topic::BuiltinTopicKey& key() const
236  const org::opensplice::core::policy::ProductData& product() const
237  };
238 
251  {
252  public:
253  const dds::topic::BuiltinTopicKey& key() const
254  const org::opensplice::core::policy::ProductData& product() const
255  const dds::topic::BuiltinTopicKey& participant_key() const
256  const std::string& name() const
257  const dds::core::policy::EntityFactory& entity_factory() const
258  const dds::core::policy::Partition& partition() const
259  };
260 
273  {
274  public:
275  const dds::topic::BuiltinTopicKey& key() const
276  const org::opensplice::core::policy::ProductData& product() const
277  const dds::topic::BuiltinTopicKey& participant_key() const
278  const std::string& name() const
279  const dds::core::policy::EntityFactory& entity_factory() const
280  const dds::core::policy::Partition& partition() const
281  const org::opensplice::core::policy::Share& share() const
282  };
283 
296  {
297  public:
298  const dds::topic::BuiltinTopicKey& key() const
299  const org::opensplice::core::policy::ProductData& product() const
300  const dds::topic::BuiltinTopicKey& publisher_key() const
301  const std::string& name() const
302  const dds::core::policy::History& history() const
303  const dds::core::policy::ResourceLimits& resource_limits() const
304  const dds::core::policy::WriterDataLifecycle& writer_data_lifecycle() const
305  };
306 
319  {
320  public:
321  const dds::topic::BuiltinTopicKey& key() const
322  const org::opensplice::core::policy::ProductData& product() const
323  const dds::topic::BuiltinTopicKey& subscriber_key() const
324  const std::string& name() const
325  const dds::core::policy::History& history() const
326  const dds::core::policy::ResourceLimits& resource_limits() const
327  const dds::core::policy::ReaderDataLifecycle& reader_data_lifecycle() const
328  const org::opensplice::core::policy::SubscriptionKey& subscription_keys() const
329  const org::opensplice::core::policy::ReaderLifespan& reader_lifespan() const
330  const org::opensplice::core::policy::Share& share() const
331  };
332 
333 namespace qos {
334 
388 
389 } /* namespace qos */
390 
391 } /* namespace topic */
392 
393 
394 
395 
396 namespace domain {
397 
405  uint32_t default_id();
406 
548  { };
549 
573  { };
574 
575 } /* namespace domain */
576 
577 
578 
579 
580 namespace core {
581 namespace status {
582 
592  {
593  public:
597  int32_t total_count() const
598  {
599  return this->delegate().total_count();
600  }
601 
606  int32_t total_count_change() const
607  {
608  return this->delegate().total_count_change();
609  }
610  };
611 
612 } /* namespace status */
613 } /* namespace core */
614 
615 
616 
617 
618 namespace core {
619 namespace policy {
633  {
634  enum Type
635  {
636  NO_INVALID_SAMPLES,
640  MINIMUM_INVALID_SAMPLES,
647  ALL_INVALID_SAMPLES
663  };
664  };
665 
667  {
668  enum Type
669  {
670  SCHEDULE_DEFAULT,
672  SCHEDULE_TIMESHARING,
675  SCHEDULE_REALTIME
678  };
679  };
680 
682  {
683  enum Type
684  {
685  PRIORITY_RELATIVE,
689  PRIORITY_ABSOLUTE
693  };
694  };
695 
696 
723  class Share : public dds::core::Value
724  {
725  public:
729  Share();
730 
737  Share(const std::string& name, bool enable);
738 
744  Share(const Share& other);
745 
746  public:
752  Share& name(const std::string& name);
753 
759  std::string name() const;
760 
766  Share& enable(bool enable);
767 
773  bool enable() const;
774  };
775 
776 
794  {
795  public:
799  ProductData();
800 
806  ProductData(const std::string& name);
807 
813  ProductData(const ProductData& other);
814 
815  public:
821  ProductData& name(const std::string& name);
822 
828  std::string name() const;
829  };
830 
880  {
881  public:
885  SubscriptionKey();
886 
893  explicit SubscriptionKey(bool use_key_list, const std::string& key);
894 
901  explicit SubscriptionKey(bool use_key_list, const dds::core::StringSeq& keys);
902 
908  SubscriptionKey(const SubscriptionKey& other);
909 
910  public:
916  SubscriptionKey& key(const std::string& key);
917 
923  SubscriptionKey& key(const dds::core::StringSeq& keys);
924 
930  const dds::core::StringSeq key() const;
931 
937  SubscriptionKey& use_key_list(bool use_key_list);
938 
944  bool use_key_list() const;
945  };
946 
970  {
971  public:
975  ReaderLifespan();
976 
983  explicit ReaderLifespan(bool used, const dds::core::Duration& duration);
984 
990  ReaderLifespan(const ReaderLifespan& other);
991 
992  public:
998  ReaderLifespan& used(bool used);
999 
1005  bool used() const;
1006 
1012  ReaderLifespan& duration(const dds::core::Duration& duration);
1013 
1019  const dds::core::Duration duration() const;
1020  };
1021 
1044  {
1045  public:
1051  Scheduling& scheduling_kind(const org::opensplice::core::policy::SchedulingKind::Type& scheduling_kind);
1052 
1059 
1065  Scheduling& scheduling_kind(const org::opensplice::core::policy::SchedulingPriorityKind::Type& scheduling_priority_kind);
1066 
1072  org::opensplice::core::policy::SchedulingPriorityKind::Type scheduling_priority_kind() const;
1073 
1079  Scheduling& scheduling_priority(int32_t scheduling_priority);
1080 
1086  int32_t scheduling_priority() const;
1087  };
1088 
1097  {
1098  public:
1103 
1121  const org::opensplice::core::policy::SchedulingPriorityKind::Type& scheduling_priority_kind,
1122  int32_t scheduling_priority);
1123 
1129  ListenerScheduling(const ListenerScheduling& other);
1130  };
1131 
1140  {
1141  public:
1146 
1164  const org::opensplice::core::policy::SchedulingPriorityKind::Type& scheduling_priority_kind,
1165  int32_t scheduling_priority);
1166 
1172  WatchdogScheduling(const WatchdogScheduling& other);
1173  };
1174 
1175 } /* namespace policy */
1176 } /* namespace core */
1177 
1178 
1179 } /* namespace opensplice */
1180 } /* namespace org */
1181 
1182 #endif /* DOXYGEN_FOR_ISOCPP2 */
1183 
1184 #endif /* OMG_DDS_CORE_DETAIL_PROPRIETARY_API_HPP_ */
1185 
1186 
1187 
Topic proprietary events Listener.
Typeless base class for the typed Topic.
Definition: AnyTopic.hpp:53
This QosPolicy specifies the scheduling parameters that will be used for the Listener thread that is ...
The proprietary builtin CMSubscriberBuiltinTopicData topic.
AnyTopic proprietary events Listener.
Topic proprietary events Listener.
Topic is the most basic description of the data to be published and subscribed.
Definition: Topic.hpp:36
The proprietary builtin CMDataReader topic.
The proprietary builtin CMPublisherBuiltinTopicData topic.
QoS Policy to for ProductData.
This class is the base for various value-type dds objects.
Definition: Value.hpp:28
virtual void on_all_data_disposed(dds::topic::Topic< T > &topic, const org::opensplice::core::status::AllDataDisposedTopicStatus &status)=0
DomainParticipant proprietary events Listener.
QoS Policy for automatically remove samples from the DataReader after a specified timeout...
QoS Policy to share a DataReader between multiple processes.
AnyTopic events Listener.
dds::topic::qos::TopicQos TransientReliable(void)
QoS Policy base class for scheduling policies.
std::vector< std::string > StringSeq
Definition: types.hpp:43
AnyTopic proprietary events Listener.
This struct provides the basic mechanism for an application to specify Quality of Service attributes ...
Definition: TopicQos.hpp:67
Global unique identifier of the Topic.
The proprietary builtin CMDataWriter topic.
The proprietary builtin CMParticipantBuiltinTopicData topic.
Topic events Listener.
Definition: Topic.hpp:39
This QosPolicy specifies the scheduling parameters that will be used for the Watchdog thread that is ...
DomainParticipant proprietary events Listener.
This QosPolicy allows the DataReader to define it&#39;s own set of keys on the data, potentially differen...