Working with entities.
Working with entities.
Enabling an entity
- To enable an DDSEntity
printf("***Error: failed to enable entity\n");
}
@ DDS_RETCODE_OK
Successful return.
Definition: infrastructure.ifc:1339
Checking if a status changed on an entity.
- Given an DDSEntity and a DDS_StatusKind to check for, get the list of statuses that have changed since the last time they were respectively cleared.
DDS_UnsignedLong DDS_StatusMask
A bit-mask (list) of concrete status types, i.e. DDS_StatusKind[].
Definition: infrastructure.ifc:1405
- Check if
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 {
return false;
}
Changing the QoS for an entity
The QoS for an entity can be specified at the entity creation time. Once an entity has been created, its QoS can be manipulated as follows.
- Get an entity's QoS settings using get_qos (abstract)
printf("***Error: failed to get qos\n");
}
- Change the desired qos policy fields
- Set the qos using set_qos (abstract).
switch (entity->set_qos(qos)) {
} break;
printf("***Error: tried changing a policy that can only be"
" set at entity creation time\n");
} break;
printf("***Error: tried changing a policy to a value inconsistent"
" with other policy settings\n");
} break;
default: {
printf("***Error: some other failure\n");
}
}
@ DDS_RETCODE_INCONSISTENT_POLICY
Application specified a set of QoS policies that are not consistent with each other.
Definition: infrastructure.ifc:1371
@ DDS_RETCODE_IMMUTABLE_POLICY
Application attempted to modify an immutable QoS policy.
Definition: infrastructure.ifc:1367
Changing the listener and enabling/disabling statuses associated with it
The listener for an entity can be specified at the entity creation time. By default the listener is enabled for all the statuses supported by the entity.
Once an entity has been created, its listener and/or the statuses for which it is enabled can be manipulated as follows.
- User defines entity listener methods
}
<<interface>> Abstract base class for all Listener interfaces.
Definition: dds_cpp.1.0/interface/infrastructure.ifcxx:80
- Get an entity's listener using get_listener (abstract)
entity_listener = entity->get_listener();
- Enable
status_kind
for the listener
enabled_status_list |= status_kind;
- Disable
status_kind
for the listener
enabled_status_list &= ~status_kind;
- Set an entity's listener to
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)
printf("***Error: setting entity listener\n");
}
Enabling/Disabling statuses associated with a status condition
Upon entity creation, by default, all the statuses are enabled for the DDS_StatusCondition associated with the entity.
Once an entity has been created, the list of statuses for which the DDS_StatusCondition is triggered can be manipulated as follows.
- Given an
entity
, a status_kind
, and the associated status_condition:
statuscondition = entity->get_statuscondition();
- Get the list of statuses enabled for the
status_condition
enabled_status_list = statuscondition->get_enabled_statuses();
- Check if the given
status_kind
is enabled for the status_condition
if (enabled_status_list & status_kind) {
} else {
}
- Enable
status_kind
for the status_condition
if (statuscondition->set_enabled_statuses(enabled_status_list | status_kind)
}
- Disable
status_kind
for the status_condition
if (statuscondition->set_enabled_statuses(enabled_status_list & ~status_kind)
}