Working with entities.
More...
Working with entities.
Enabling an entity
- To enable an DDS_Entity
printf("***Error: failed to enable entity\n");
}
Checking if a status changed on an entity.
- Given an DDS_Entity and a DDS_StatusKind to check for, get the list of statuses that have changed since the last time they were respectively cleared.
- 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 1;
} else {
return 0;
}
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).
} 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");
}
}
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
MyEntityListener_LivelinessChanged(
void* listener_data,
- Set the entity_listener functions
entity_listener.on_liveliness_changed = MyEntityListener_LivelinessChanged;
- Get an entity's listener using get_listener (abstract)
entity_listener = DDS_Entity_get_listener(entity);
- 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 (DDS_Entity_set_listener(entity, &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:
- Get the list of statuses enabled for the
status_condition
- 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
enabled_status_list | status_kind)
}
- Disable
status_kind
for the status_condition
enabled_status_list & ~status_kind)
}