CoreDX DDS C++ Reference Manual
xtypes.hh
Go to the documentation of this file.
1 /*****************************************************************
2  *
3  * file: xtypes.hh
4  * desc: Provides the CoreDX DDS C++ X-Types Dynamic Type API.
5  *
6  *****************************************************************
7  *
8  * Copyright(C) 2013-2016 Twin Oaks Computing, Inc
9  * All rights reserved. Castle Rock, CO 80108
10  *
11  *****************************************************************
12  *
13  * This software has been provided pursuant to a License Agreement
14  * containing restrictions on its use. This software contains
15  * valuable trade secrets and proprietary information of
16  * Twin Oaks Computing, Inc and is protected by law. It may not be
17  * copied or distributed in any form or medium, disclosed to third
18  * parties, reverse engineered or used in any manner not provided
19  * for in said License Agreement except with the prior written
20  * authorization from Twin Oaks Computing, Inc.
21  *
22  *****************************************************************/
23 #ifndef DDS_XTYPES_HH
24 #define DDS_XTYPES_HH
25 
26 #include <dds/dds.hh>
27 #include <dds/xtypes_typeobject.hh>
28 #include <dds/xtypes_dtype.hh>
29 
30 namespace DDS {
31  class DynamicDataReader;
32  class DynamicDataWriter;
33 
42  DDS::TypeObject * TypecodeQosPolicy_to_typeobject(TypecodeQosPolicy * tc_qos);
43 
44  typedef DDS::sequence<DynamicData*> DynamicDataSeq;
45 
46  /******************************/
47  /* DDS_DynamicDataReader API */
48  /******************************/
57  {
58  public:
59  /* DataReader Methods */
60  DDS::ReturnCode_t read( DynamicDataSeq * received_data,
61  DDS::SampleInfoSeq * sample_infos,
62  int max_samples,
63  DDS::SampleStateMask sample_states,
64  DDS::ViewStateMask view_states,
65  DDS::InstanceStateMask instance_states );
66  DDS::ReturnCode_t take( DynamicDataSeq * received_data,
67  DDS::SampleInfoSeq * sample_infos,
68  int max_samples,
69  DDS::SampleStateMask sample_states,
70  DDS::ViewStateMask view_states,
71  DDS::InstanceStateMask instance_states );
72  DDS::ReturnCode_t read_w_condition ( DynamicDataSeq * received_data,
73  DDS::SampleInfoSeq * sample_infos,
74  int max_samples,
75  DDS::ReadCondition * a_condition);
76  DDS::ReturnCode_t take_w_condition ( DynamicDataSeq * received_data,
77  DDS::SampleInfoSeq * sample_infos,
78  int max_samples,
79  DDS::ReadCondition * a_condition);
80  DDS::ReturnCode_t read_next_sample ( DynamicData ** received_data,
81  DDS::SampleInfo * sample_info);
82  DDS::ReturnCode_t take_next_sample ( DynamicData ** received_data,
83  DDS::SampleInfo * sample_info);
84  DDS::ReturnCode_t read_instance ( DynamicDataSeq * received_data,
85  DDS::SampleInfoSeq * sample_infos,
86  int max_samples,
87  DDS::InstanceHandle_t a_handle,
88  DDS::SampleStateMask sample_states,
89  DDS::ViewStateMask view_states,
90  DDS::InstanceStateMask instance_states);
91  DDS::ReturnCode_t take_instance ( DynamicDataSeq * received_data,
92  DDS::SampleInfoSeq * sample_infos,
93  int max_samples,
94  DDS::InstanceHandle_t a_handle,
95  DDS::SampleStateMask sample_states,
96  DDS::ViewStateMask view_states,
97  DDS::InstanceStateMask instance_states);
98  DDS::ReturnCode_t read_next_instance ( DynamicDataSeq * received_data,
99  DDS::SampleInfoSeq * sample_infos,
100  int max_samples,
101  DDS::InstanceHandle_t previous_handle,
102  DDS::SampleStateMask sample_states,
103  DDS::ViewStateMask view_states,
104  DDS::InstanceStateMask instance_states);
105  DDS::ReturnCode_t take_next_instance ( DynamicDataSeq * received_data,
106  DDS::SampleInfoSeq * sample_infos,
107  int max_samples,
108  DDS::InstanceHandle_t previous_handle,
109  DDS::SampleStateMask sample_states,
110  DDS::ViewStateMask view_states,
111  DDS::InstanceStateMask instance_states);
112  DDS::ReturnCode_t read_next_instance_w_condition( DynamicDataSeq * received_data,
113  DDS::SampleInfoSeq * sample_infos,
114  int max_samples,
115  DDS::InstanceHandle_t previous_handle,
116  DDS::ReadCondition * a_condition);
117  DDS::ReturnCode_t take_next_instance_w_condition( DynamicDataSeq * received_data,
118  DDS::SampleInfoSeq * sample_infos,
119  int max_samples,
120  DDS::InstanceHandle_t previous_handle,
121  DDS::ReadCondition * a_condition);
122  DDS::ReturnCode_t return_loan ( DynamicDataSeq * received_data,
123  DDS::SampleInfoSeq * sample_infos);
124  DDS::ReturnCode_t get_key_value ( DynamicData ** key_holder,
125  DDS::InstanceHandle_t handle);
126  DDS::InstanceHandle_t lookup_instance ( DynamicType * instance_data);
127  static DynamicDataReader * narrow( DDS::DataReader * dr) { return (DynamicDataReader *)dr; }
128  DynamicDataReader * narrow( void ) { return this; }
129 
130  protected:
131  /* Constructor / Destructor private - use Subscriber::create_datareader() */
134  };
135 
136 
137  // -------------------------------------------------------------
138  // Dynamic Type DataWriter
139  // -------------------------------------------------------------
145  class COREDX_CPP_CLASS_API DynamicDataWriter : public DDS::DataWriter {
146  public:
147  /* DataWriter Methods */
148  DDS::InstanceHandle_t register_instance( const DynamicData * instance_data);
149  DDS::InstanceHandle_t register_instance_w_timestamp( const DynamicData * instance_data,
150  const DDS::Time_t source_timestamp);
151  DDS::ReturnCode_t unregister_instance( const DynamicData * instance_data,
152  const DDS::InstanceHandle_t handle);
153  DDS::ReturnCode_t unregister_instance_w_timestamp( const DynamicData * instance_data,
154  const DDS::InstanceHandle_t handle,
155  const DDS::Time_t source_timestamp);
156  DDS::ReturnCode_t write( const DynamicData * instance_data,
157  const DDS::InstanceHandle_t handle);
158  DDS::ReturnCode_t write_w_timestamp( const DynamicData * instance_data,
159  const DDS::InstanceHandle_t handle,
160  const DDS::Time_t source_timestamp);
161  DDS::ReturnCode_t dispose( const DynamicData * instance_data,
162  const DDS::InstanceHandle_t instance_handle);
163  DDS::ReturnCode_t dispose_w_timestamp( const DynamicData * instance_data,
164  const DDS::InstanceHandle_t instance_handle,
165  const DDS::Time_t source_timestamp);
166  DDS::ReturnCode_t get_key_value( DynamicData * key_holder,
167  const DDS::InstanceHandle_t handle);
168  DDS::InstanceHandle_t lookup_instance( const DynamicData * instance_data);
169  static DynamicDataWriter * narrow( DDS::DataWriter * dw) { return (DynamicDataWriter *)dw; }
170  DynamicDataWriter * narrow( void ) { return this; }
171 
172  protected:
173  /* Constructor / Destructor private -- use Publisher::create_datawriter() */
176  };
177 
178 };
179 #endif
A DynamicData object represents an individual data sample. It provides reflective getters and setters...
Definition: xtypes_dtype.hh:1129
long ReturnCode_t
Definition: dds.hh:200
The DataWriter entity provides an interface for the application to publish (write) data...
Definition: dds.hh:2179
An instance of DynamicType represent a type’s schema: its physical name, kind, member definitions (i...
Definition: xtypes_dtype.hh:925
Sequence data type.
Definition: dds_seq.hh:55
DDS::TypeObject * TypecodeQosPolicy_to_typeobject(TypecodeQosPolicy *tc_qos)
Helper function to get DDS::TypeObject from a discovered (or otherwise obtained) TypeCode byte buffer...
A ReadCondition is a specialized Condition associated with a DataReader.
Definition: dds.hh:3057
The DataReader entity allows the application to subscribe to and read data.
Definition: dds.hh:2466
Provides the DDS infrastructure.
Definition: dds_builtin_basic.hh:28
A DataWriter that writes &#39;DynamicData&#39; data elements. Data written by this DataWriter can be read by ...
Definition: xtypes.hh:145
DDS_HANDLE_TYPE_NATIVE InstanceHandle_t
Definition: dds.hh:199
The Time_t structure contains data to define a time.
Definition: dds.hh:214
Provides a DataReader interface that is tailored to support reading an X-Types defined DynamicData da...
Definition: xtypes.hh:56

© 2009-2017 Twin Oaks Computing, Inc
Castle Rock, CO 80108
All rights reserved.