OpenDDS  Snapshot(2023/04/28-20:55)
FeatureDisabledQosCheck.h
Go to the documentation of this file.
1 /*
2  *
3  *
4  * Distributed under the OpenDDS License.
5  * See: http://www.opendds.org/license.html
6  */
7 
8 #ifndef OPENDDS_DCPS_FEATURE_DISABLED_QOS_CHECK_H
9 #define OPENDDS_DCPS_FEATURE_DISABLED_QOS_CHECK_H
10 
11 #include "Qos_Helper.h"
12 
13 #ifdef OPENDDS_NO_OWNERSHIP_PROFILE
14 #define OPENDDS_NO_OWNERSHIP_PROFILE_COMPATIBILITY_CHECK(qos, error_rtn_value) \
15  if (qos.history.kind == ::DDS::KEEP_ALL_HISTORY_QOS || qos.history.depth > 1) { \
16  ACE_ERROR((LM_ERROR, \
17  ACE_TEXT("(%P|%t) ERROR: ") \
18  ACE_TEXT("Feature ownership_profile disabled, ") \
19  ACE_TEXT("therefore history must be KEEP_LAST, depth 1.\n"))); \
20  return error_rtn_value; \
21  }
22 #else
23 #define OPENDDS_NO_OWNERSHIP_PROFILE_COMPATIBILITY_CHECK(qos, error_rtn_value)
24 #endif
25 
26 #ifdef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE
27 #define OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE_COMPATIBILITY_CHECK(qos, error_rtn_value) \
28  if (qos.ownership.kind == ::DDS::EXCLUSIVE_OWNERSHIP_QOS) { \
29  ACE_ERROR((LM_ERROR, \
30  ACE_TEXT("(%P|%t) ERROR: ") \
31  ACE_TEXT("Feature ownership_kind_exclusive disabled, ") \
32  ACE_TEXT("therefore ownership kind must be SHARED.\n"))); \
33  return error_rtn_value; \
34  }
35 #define OPENDDS_NO_OWNERSHIP_STRENGTH_COMPATIBILITY_CHECK(qos, error_rtn_value) \
36  if (qos.ownership_strength.value != 0) { \
37  ACE_ERROR((LM_ERROR, \
38  ACE_TEXT("(%P|%t) ERROR: ") \
39  ACE_TEXT("Feature ownership_kind_exclusive disabled, ") \
40  ACE_TEXT("therefore ownership strength must be the default.\n"))); \
41  return error_rtn_value; \
42  }
43 #else
44 #define OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE_COMPATIBILITY_CHECK(qos, error_rtn_value)
45 #define OPENDDS_NO_OWNERSHIP_STRENGTH_COMPATIBILITY_CHECK(qos, error_rtn_value)
46 #endif
47 
48 #ifdef OPENDDS_NO_OBJECT_MODEL_PROFILE
49 #define OPENDDS_NO_OBJECT_MODEL_PROFILE_COMPATIBILITY_CHECK(qos, error_rtn_value) \
50  if (qos.presentation.access_scope == ::DDS::GROUP_PRESENTATION_QOS) { \
51  ACE_ERROR((LM_ERROR, \
52  ACE_TEXT("(%P|%t) ERROR: ") \
53  ACE_TEXT("Feature object_model_profile disabled, ") \
54  ACE_TEXT("therefore presentation access scope cannot be GROUP.\n"))); \
55  return error_rtn_value; \
56  } \
57  if (qos.presentation.access_scope == ::DDS::TOPIC_PRESENTATION_QOS) { \
58  ACE_ERROR((LM_ERROR, \
59  ACE_TEXT("(%P|%t) ERROR: ") \
60  ACE_TEXT("Feature object_model_profile disabled. ") \
61  ACE_TEXT("Although not part of the profile, currently ") \
62  ACE_TEXT("this means presentation access scope cannot be TOPIC.\n"))); \
63  return error_rtn_value; \
64  }
65 #else
66 #define OPENDDS_NO_OBJECT_MODEL_PROFILE_COMPATIBILITY_CHECK(qos, error_rtn_value)
67 #endif
68 
69 #ifdef OPENDDS_NO_PERSISTENCE_PROFILE
70 
71 #define OPENDDS_NO_DURABILITY_SERVICE_COMPATIBILITY_CHECK(qos, error_rtn_value) \
72  if (qos.durability_service != TheServiceParticipant->initial_DurabilityServiceQosPolicy()) { \
73  ACE_ERROR((LM_ERROR, \
74  ACE_TEXT("(%P|%t) ERROR: ") \
75  ACE_TEXT("Feature persistence_profile disabled, ") \
76  ACE_TEXT("therefore durability service must be the default.\n"))); \
77  return error_rtn_value; \
78  }
79 
80 #define OPENDDS_NO_DURABILITY_KIND_TRANSIENT_PERSISTENT_COMPATIBILITY_CHECK(qos, error_rtn_value) \
81  if (qos.durability.kind == ::DDS::TRANSIENT_DURABILITY_QOS || \
82  qos.durability.kind == ::DDS::PERSISTENT_DURABILITY_QOS) { \
83  ACE_ERROR((LM_ERROR, \
84  ACE_TEXT("(%P|%t) ERROR: ") \
85  ACE_TEXT("Feature persistence_profile disabled, ") \
86  ACE_TEXT("therefore durability kind must not ") \
87  ACE_TEXT("be TRANSIENT_DURABILITY_QOS or PERSISTENT_DURABILITY_QOS.\n"))); \
88  return error_rtn_value; \
89  }
90 
91 #else
92 
93 #define OPENDDS_NO_DURABILITY_SERVICE_COMPATIBILITY_CHECK(qos, error_rtn_value)
94 #define OPENDDS_NO_DURABILITY_KIND_TRANSIENT_PERSISTENT_COMPATIBILITY_CHECK(qos, error_rtn_value)
95 
96 #endif
97 
98 #endif