if (entity->enable() != DDS_RETCODE_OK) { printf("***Error: failed to enable entity\n"); }
DDS_StatusMask status_changes_mask = entity->get_status_changes();
status_kind
was changed since the last time it was cleared. A plain communication status change is cleared when the status is read using the entity's get_<plain communication status>()
method. A read communication status change is cleared when the data is taken from the middleware via a TDataReader_take() call [see Changes in Status for details]. if (status_changes_mask & status_kind) { return true; } else { /* ... YES, status_kind changed ... */ return false; /* ... NO, status_kind did NOT change ... */ }
if (entity->get_qos(qos) != DDS_RETCODE_OK) { printf("***Error: failed to get qos\n"); }
/* Change the desired qos policies */ /* qos.policy.field = ... */
switch (entity->set_qos(qos)) { case DDS_RETCODE_OK: { /* success */ } break; case DDS_RETCODE_IMMUTABLE_POLICY: { printf("***Error: tried changing a policy that can only be" " set at entity creation time\n"); } break; case DDS_RETCODE_INCONSISTENT_POLICY: { printf("***Error: tried changing a policy to a value inconsistent" " with other policy settings\n"); } break; default: { printf("***Error: some other failure\n"); } }
Once an entity has been created, its listener and/or the statuses for which it is enabled can be manipulated as follows.
/* ... methods defined by EntityListener ... */ public class MyEntityListener implements DDSListener { // ... methods defined by EntityListener ... }
entity_listener = entity->get_listener();
status_kind
for the listener
enabled_status_list |= status_kind;
status_kind
for the listener
enabled_status_list &= ~status_kind;
entity_listener
using set_listener (abstract). Only enable the listener for the statuses specified by the enabled_status_list
. if (entity->set_listener(entity_listener, enabled_status_list) != DDS_RETCODE_OK) { printf("***Error: setting entity listener\n"); }
Once an entity has been created, the list of statuses for which the DDS_StatusCondition is triggered can be manipulated as follows.
entity
, a status_kind
, and the associated status_condition:
statuscondition = entity->get_statuscondition();
status_condition
enabled_status_list = statuscondition->get_enabled_statuses();
status_kind
is enabled for the status_condition
if (enabled_status_list & status_kind) { /*... YES, status_kind is enabled ... */ } else { /* ... NO, status_kind is NOT enabled ... */ }
status_kind
for the status_condition
if (statuscondition->set_enabled_statuses(enabled_status_list | status_kind) != DDS_RETCODE_OK) { /* ... check for cause of failure */ }
status_kind
for the status_condition
if (statuscondition->set_enabled_statuses(enabled_status_list & ~status_kind) != DDS_RETCODE_OK) { /* ... check for cause of failure */ }