Federates use the state of the objects as one of the primary means of communication. At any given time only one federate is responsible for simulating a given object attribute. That federate provides new values for that attribute to the other federates in the federation execution through the RTI services. The federate providing the new attribute values is said to be updating that attribute value. Federates receiving those values are said to be reflecting that attribute.
The privilege to update a value for an attribute is uniquely held by a single federate at any given time during a federation execution. A federate that has the privilege to update values for an attribute is said to own that attribute. The RTI provides services that allow federates to exchange ownership of object attributes. The federate that registers an object implicitly has the privilege to delete that object. The RTI provides services that allow federates to transfer the "privilegeToDeleteObject" attribute in the same way as other attributes.
All objects have an ID. The value of the ID is unique for each federation execution. Object IDs are dynamically generated by an RTI service or can be drawn from a pool of reserved values. These reserved values are set aside for special situations where federates must have knowledge of object IDs before a federation execution begins.
The FOM framework also allows for interaction classes for each object model. The types of interactions possible between different classes of objects, their affected attributes and the interaction parameters are specified. An interaction is an explicit action taken by an object, that can optionally be directed toward another object.
A federation is the combination of a particular FOM, a particular set of federates, and the RTI services. A federation is designed for a specific purpose using a commonly understood federation object model and a set of federates that can associate their individual semantics with that object model. A federation execution is an instance of executing the federation with a specific FOM, an RTI and using various execution details.
Figure 1. Basic States of the Federation Execution
Figure 2. Overall View of Federate to RTI Relationship
The Create Federation Execution service creates a new named federation execution, and adds it to the set of supported federation executions. The RID parameter supplies FOM and federation execution data to the RTI.
Supplied Parameters
A federation execution name
RTI Initialization Data (RID)
None
Pre-conditions
The named federation execution does not exist
Post-conditions
A federation execution exists with the given name that can be joined by federates
Exceptions
Named federation execution already exists
Could not open RID
Error reading RID
RTI internal error
Related Services
This service removes the named federation execution from the RTI set of supported federation executions. All federation activity should have stopped and all federates should have resigned before invoking this service.
Supplied Parameters
A federation execution name
Returned Parameters
None
Pre-conditions
There are no federates joined to this federation execution
Post-conditions
The named federation execution does not exist
Exceptions
Federates are joined to the federation execution
Named federation execution does not exist
RTI internal error
Related Services
The Join Federation Execution service affiliates the federate with the named federation execution. Execution of the Join Federation Execution service indicates the intention to participate in the federation.
Supplied Parameters
A federate name
A federation execution name
If required, connection parameters that allow the RTI and federate to communicate
Returned Parameters
A federate handle
Pre-conditions
The named federation execution exists
The named federate is not joined to that execution
Post-conditions
The federate is a member of the named federation execution
Exceptions
Federate name already in use
Federate already joined to the named federation execution
Specified federation execution does not exist
RTI internal error
Related Services
The Resign Federation Execution service indicates the desired cessation of federation participation. Before resigning, ownership of attributes held by the federate should be resolved. The federate can transfer their ownership to other federates, release them for ownership acquisition at a later time, or delete the object to which they are attached. As a convenience to the federate, the Resign Federation Execution service accepts parameters that direct the RTI to delete all objects for which the federate holds that privilege and release all other attributes for future ownership acquisition.
Supplied Parameters
Federate name specifying the federate to be resigned
A federation execution name
Optional directive to (1) release all attribute ownership, (2) delete all objects for which the federate holds delete privilege, or (3) perform action (2) and then action (1)
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
If optional directive is not supplied, the federate should not own any attributes
Post-conditions
The specified federate is not a member of the specified federation execution
There are no attributes in the federation execution owned by the specified federate
Exceptions
Federate owns attributes
Specified federate does not exist
Federate not a federation execution member
Specified federation execution does not exist
RTI internal error
Related Services
Indicates to the RTI the desire to stop the advance of the federation execution. The federation members will be instructed by the RTI to pause as soon after the invocation of the Request Pause service as possible. The label, supplied when the pause is requested, will be supplied to the other federates via the Initiate Pause service.
Supplied Parameters
A label
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federation execution is advancing (not paused)
Post-conditions
A federation pause is pending
Exceptions
Federation already paused
Federate not a federation execution member
RTI internal error
Related Services
Instructs the federate to stop changing state as soon as possible. The label provided to the RTI when the pause was requested, via the Request Pause service, will be supplied to the federate.
Supplied Parameters
The label supplied when the Request Pause service was invoked
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is not already paused
Post-conditions
The federate is informed of a pending pause
Exceptions
Federate already paused
Federate internal error
Related Services
Indicates that the federate has successfully stopped changing state.
Supplied Parameters
The label supplied when the Initiate Pause service was invoked.
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate has paused
Post-conditions
The RTI is informed that the federate is paused
Exceptions
Unknown label
No pause requested
Federate not an execution member
RTI internal error
Related Services
Indicates the desire to resume the advance of the federation execution. The federation members will be instructed by the RTI to resume the advance of their state as soon after the invocation of the Request Resume service as possible.
Supplied Parameters
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federation execution is paused
Post-conditions
A federation resume is pending
Exceptions
Federation not paused
Federate not a federation execution member
RTI internal error
Related Services
Informs a paused federate that it may return to the state evolution process in which it was engaged when it received the Initiate Pause service invocation. The federate should resume updating state as soon as possible.
Supplied Parameters
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is paused
Post-conditions
The federate is informed that it may resume evolving state
Exceptions
Federate not paused
Federate internal error
Related Services
Indicates that the federate is evolving state.
Supplied Parameters
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is evolving state
Post-conditions
The RTI has been informed that the federate is evolving state
Exceptions
No resume requested
Federate not a federation execution member
RTI internal error
Related Services
Specifies that a federation save should take place. If the optional federation time parameter is present, the save takes place at that time. If there is no federation time parameter, the federation members will be instructed by the RTI to save as soon after the invocation of the Request Federation Save service as possible. The federation execution should be paused when a save occurs to help ensure consistency of the saved data among the federation participants. It is understood that the time required to perform a paused save may be unacceptable for some federations. In those cases, the federation save will be performed while the federates are executing. Only one requested/save will be outstanding at a time. A new save request replaces any outstanding save request.
Supplied Parameters
A label
Optional federation time of the desired federation save
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Save not in progress
Post-conditions
A federation save has been requested for the specified federate time
All previous requested saves are canceled
Exceptions
Save in progress
Federation time has already passed
Invalid federation time
Federate not a federation execution member
RTI internal error
Related Services
Instructs the federate to save state. If the optional federation time parameter is present, the save takes place at that time If there is no federation time parameter, the federate should save as soon after the invocation of the Initiate Federate Save service as possible. The label provided to the RTI when the save was requested, via the Request Federation Save service, will be supplied to the federate. A federate can expect a Initiate Federate Save invocation anytime it would expect a Time Advance Grant invocation. See the Request Federation Save service description for a discussion of the interaction of save and pause.
Supplied Parameters
The label supplied when the Request Federation Save service was invoked
Optional federation time to associate with the save
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
A federation save has been scheduled for time t and the RTI has determined that it is safe for the federate to advance to t
Post-conditions
The federate has been notified to begin saving its state
Exceptions
Invalid federation time
Unable to perform save
Federate internal error
Related Services
Tells the RTI that the federate is beginning to save its state. This notification allows the RTI to perform any necessary state save actions. If the federate received a federation time parameter with the corresponding Initiate Federate Save service invocation, that federation time should be a parameter to the Federate Save Begun call so the service can confirm that the correct save is being taken.
Supplied Parameters
Optional federation time associated with the save
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate has received an Initiate Federate Save invocation
The federate is ready to start saving its state
Post-conditions
The RTI has been informed that the federate has begun saving its state
Exceptions
Save not initiated
Invalid federate time
Federate not a federation execution member
RTI internal error
Related Services
Tells the RTI that the federate has completed its save attempt. The save-success indicator informs the RTI that the federate save either succeeded or failed.
Supplied Parameters
A save-success indicator
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate has saved its state
Post-conditions
The RTI has been informed of the status of the state save attempt
Exceptions
Invalid save-success indicator
Save not initiated
Federate not an execution member
RTI internal error
Related Services
Directs the RTI to begin the federation execution restoration process.
Supplied Parameters
The label supplied when the Request Federation Save service was invoked
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federation has a save with the specified label
Post conditions
Federation restore is pending
Exceptions
Specified save label does not exist
Federate not a federation execution member
RTI internal error
Related Services
Instructs the federate to return to a previously saved state indicated by the supplied federation save label.
Supplied Parameters
The label supplied when the Request Restore service was invoked
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federation has a save with the specified label
Post-conditions
The federate has been informed to begin restoring state
Exceptions
No federate save associated with the label
Could not initiate restore
Federate internal error
Related Services
Tells the RTI that the federate has completed its restore attempt. If restore was successful, the federate is in the state it was in when the federation save associated with the label occurred.
Supplied Parameters
The label supplied when the Initiate Restore service was invoked
Restore-success indicator
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Federate was directed to restore through invocation of the Initiate Restore service
If restore was successful, the federate is in a state identical to the state it was in when the federation save associated with the supplied label occurred. If restore was unsuccessful the federate is in an undefined state.
Post-conditions
The RTI has been informed of the status of the restore attempt
Exceptions
Unknown label
Invalid restore-success indicator
Restore not requested
Federate not a federation execution member
RTI internal error
Related Services
The information conveyed by the federate via the Publish Object Class service is used in multiple ways. First, it indicates which attributes of an object class the federate is capable of providing to the federation. The federate may do this by creating objects of the class and then updating the attribute values. The federate may also (or alternatively) use ownership management services to acquire attributes of objects created by another federate (of the same object class) and then update the values of those acquired attributes.
Note that every object has an attribute named "privilegeToDeleteObject" that is used to manage the privilege to delete an object. This attribute is like any other attribute and its value may be updated by the owning federate if desired. A federate must publish the privilegeToDeleteObject attribute for the object class whose instances it intends to delete. If a federate intends to acquire the privilege to delete objects registered by other federates, it must both publish and subscribe to the privilegeToDeleteObject attribute for those objects' classes.
Supplied Parameters
An object class name
Set of attribute names
Indication to include or exclude specified object class
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The specified object class and attributes are part of the federation object model
The federate must not own object attributes of the specified object class (if the specified object class is to be excluded)
Post-conditions
The federate may now register objects of the specified class (for include only)
The federate may not register objects of the specified class (for exclude only)
Exceptions
Object class not defined in the RID
Attribute name(s) not defined in the RID
Federate owns attribute(s)
Federate is not a federation execution member
RTI internal error
Related Services
Subscribe Object Class Attribute
Informs the RTI which classes of interactions the federate will be sending to the federation.
Supplied Parameters
An interaction class name
Indication to include or exclude specified interaction class
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The interaction class is specified in the RID
Post-conditions
The federate can now send interactions of the specified class (for include only)
The federate may not send interactions of the specified class (for exclude only)
Exceptions
Interaction class not defined in the RID
Federate is not a federation execution member
RTI internal error
Related Services
Indicates which class of objects the federate desires to discover, and which attribute values the federate will receive from that class. An object instance is a member of the specified object class if it has been registered as a member of the object class or any subclass (descendent object class) of the object class as defined in the FOM. The federate specifies an attribute it is to receive from the attribute names specified for the object class in the FOM.
Subscribing to a given object class implies a subscription to that object class and all descendent object classes. Objects registered as subclasses will be discovered by the federate as the specified object class. Additionally, only the specified attribute from the descendent and specified object class instances will be available to the federate. Each use of this service replaces all information specified to the RTI in previous service invocations for the same object class.
Supplied Parameters
An object class name
An attribute name (for include action only)
Indication to either include the specified attribute in the specified object class subscription or unsubscribe the entire specified object class
An optional region (see section 7)
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The object class and attribute name are defined in the RID
The subscription region exists
Post-conditions
The RTI has been informed of the federate's desired subscription or unsubscription
Exceptions
Object class not defined in the RID
Attribute name(s) not defined in the RID
Subscription region not known
Federate is not a federation execution member
RTI internal error
Related Services
Specifies the class of interactions which should or should not be sent to the federate.
Subscribe Interaction Class receives an interaction class name and an indication of the federate's desire to subscribe or unsubscribe to the named interaction class. Subscribing to a given interaction class implies a subscription to that interaction class and all descendent interaction classes. Each use of this service replaces all information specified to the RTI in previous service invocations for the same interaction class.
Supplied Parameters
An interaction class name
Indication to include or exclude interaction class in subscription list
Optional subscription region (see section 7)
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The interaction class is defined in the RID
The subscription region exists
Post-conditions
The RTI will, or will not, as indicated, deliver interactions of the specified interaction class
Exceptions
Interaction class not defined in the RID
Subscription region not known
Federate is not a federation execution member
RTI internal error
Related Services
The RTI can issue the Control Updates service to the federate at any time. It tells the federate that the specified attributes for the specified object class are or are not required somewhere in the federation. If the supplied parameter indicates that the attribute values should not be updated, the federate should cease updating the values of the referenced attributes. However, if the supplied parameter indicates that the attribute values should be updated, the federate must update the values of the referenced attributes.
Supplied Parameters
An object class
A set of attribute names
Flag indicating that the values of the specified attributes should or should not be updated
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is updating the attribute values for the object class
In the case of a request to stop updating, no federate is subscribing to the attributes of the object class
In the case of a request to update, some other federate is subscribing to the attributes of the object class
Post-conditions
The federate must or may not (as specified) update the attribute values of this object class
Exceptions
Object class not published
Attribute not published
Federate internal error
Related Services
Subscribe Object Class Attribute
The RTI can issue the Control Interactions service to the federate at any time. It tells the federate that the specified class of interactions is or is not required somewhere in the federation. If the supplied parameter indicates that the interaction should not be sent, the federate should cease sending the referenced interaction. However, if the supplied parameter indicates that the interaction should be sent, the federate must send the referenced interaction.
Supplied Parameters
An interaction class name
Flag indicating that the specified interactions of this class should or should not be sent
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is sending the interaction class
In the case of a request to stop sending, no federate is subscribing to the interaction class
In the case of a request to send, some federate is subscribing to the interaction class
Post-conditions
If possible, the federate will or will not (as specified) send interactions of this class
Exceptions
Interaction class not published
Federate internal error
Related Services
Request federation execution-unique object ID numbers. Each ID is valid for only one object registration. If the object is deleted from the federation, the ID must not be reused. The RTI will not reuse IDs once they are deleted. A set of IDs may be reserved for special purposes and will not be issued by the Request ID service.
Supplied Parameters
The desired number of new IDs
A federate handle and a federation execution name
Returned Parameters
Set of IDs
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The federate can register objects with the returned IDs
Exceptions
Too many IDs requested
ID supply exhausted
Federate is not a federation execution member
RTI internal error
Related Services
Links an object ID with an instance of an object class. All attributes specified as publishable by the registering federate (see definition of Publish Object Class) are initially set as owned by the registering federate.
Supplied Parameters
An object class name
An object ID
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is publishing the object class
The ID has not already been linked with another object
Post-conditions
The specified object ID is associated with the specified object class
Exceptions
Invalid object ID
Object ID is already linked with another object
Object class not defined in RID
Federate not publishing the specified object class
Federate is not a federation execution member
RTI internal error
Related Services
Provides the current attribute values to the federation for attributes owned by the federate. The federate should supply changed attribute values as specified in the FOM. This service, coupled with the Reflect Attribute Values service, form the primary data exchange mechanism supported by the RTI.
Supplied Parameters
An object ID
A set of attribute name and value pairs
Federation time
A user-supplied tag
A federate handle and a federation execution name
Returned Parameters
An event retraction handle
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate owns the attribute for which values are provided
Post-conditions
The RTI will distribute the new attribute values to subscribing federates
Exceptions
Invalid object ID
Attribute name(s) not defined in the RID
The federate does not own the specified attributes
Invalid federation time
Federate is not a federation execution member
RTI internal error
Related Services
The Discover Object service informs the federate that the RTI has discovered an object. An object is discovered when the following occur:
An object ID
An object class name
Federation time
A user-supplied tag
A retraction handle
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The object class is published by some federate
The federate has subscribed to the object class
An object of that class has been registered with that ID
This federate has not discovered this object
An update attribute value has been issued by some other federate
Post-conditions
The object is known to the federate
Exceptions
The federate could not discover the object
Object class name not known
Invalid federation time
Federate internal error
Related Services
Subscribe Object Class Attribute
Provides the federate with new values for a discovered attribute. This service, coupled with the Update Attribute Values service, forms the primary data exchange mechanism supported by the RTI.
Supplied Parameters
An object ID
A set of attribute name and value pairs
Federation time
A user-supplied tag
A retraction handle
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is reflecting the attribute values
Post-conditions
The new attribute values have been supplied to the federate
Exceptions
Object not known
Attribute name not known
Invalid federation time
Federate internal error
Related Services
Informs the federation of an action taken by one object, potentially towards another object. The service returns a federation-unique retraction handle.
Supplied Parameters
An interaction class name
A set of parameter name and value pairs
Federation time
A user-supplied tag
A federate handle and a federation execution name
Returned Parameters
A retraction handle
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is publishing the interaction class
Post-conditions
The RTI has received the interaction
Exceptions
Federate not publishing the specified interaction class
Interaction class not defined in RID
Interaction parameter not defined in RID
Invalid federation time
Federate is not a federation execution member
RTI internal error
Related Services
Provides information about an action taken by one federation object potentially towards another object.
Supplied Parameters
An interaction class name
Interaction parameter name and value pairs
Federation time
A user-supplied tag
A retraction handle
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is subscribing to the interaction class
Post-conditions
The federate has received the interaction
Exceptions
Interaction class not known
Interaction parameter not known
Invalid federation time
Federate internal error
Related Services
Informs the federation that an object with that ID, owned by the federate, is to be removed from the federation execution. Once the object is removed from the federation execution, its ID cannot be reused. The RTI will use the Remove Object service to inform the reflecting federates that the object has been deleted.
Supplied Parameters
An object ID
Federation time
User-supplied tag
A federate handle and a federation execution name
Returned Parameters
A retraction handle
Pre-conditions
The federation execution exists
The federate has joined that federation execution
An object with that ID exists
The federate has the privilege to delete the object (it owns the privilegeToDeleteObject attribute)
Post-conditions
The federate no longer updates values for the object
The object does not exist in the federation execution
Exceptions
Federate does not own the delete privilege
Object not known
Invalid federation time
Federate is not a federation execution member
RTI internal error
Related Services
Informs the federate that an object either is no longer in the associated region (if data distribution management services are used, see section 7), or the object has been deleted from the federation execution.
Supplied Parameters
An object ID
Object removal reason (deleted or out-of-scope)
Federation time
User-supplied tag
Optional retraction handle (for deleted objects)
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate knows about the object.
Post-conditions
The federate has been advised to remove the object
Exceptions
Object not known
Invalid federation time
Federate internal error
Related Services
The transportation type for each attribute of an object is defaulted from the object class description in the RID. A federate may choose to change the transportation type during execution. Invoking the Change Attribute Transportation Type service will change the transportation type for all future Update Attribute Values service calls for the specified attributes on the specified object.
Supplied Parameters
An object ID
An attribute name set
A transportation type
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate owns the attribute
Post-conditions
The transporation type is changed for the specified attributes
Exceptions
Object not known
Attribute name not defined
The federate does not own the specified attributes
Invalid transportation type
Federate is not a federation execution member
RTI internal error
Related Service
The data ordering type for each attribute of an object is defaulted from the object class description in the RID. A federate may choose to change the data ordering type during execution. Invoking the Change Attribute Order Type service will change the data ordering type for all future Update Attribute Values service calls for the specified attributes on the specified object.
Supplied Parameters
An object ID
An attribute name set
A data ordering type
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate owns the attribute
Post-conditions
The data ordering type is changed for the specified attributes
Exceptions
Object not known
Attribute name not defined
The federate does not own the specified attributes
Invalid data ordering type
Federate is not a federation execution member
RTI internal error
Related Service
Change Attribute Transportation Type
The transportation type for each interaction is defaulted from the interaction class description in the RID. A federate may choose to change the transportation type during execution. Invoking the Change Interaction Transportation Type service will change the transportation type for all future Send Interaction service calls for the specified interaction class.
Supplied Parameters
An interaction class
A transportation type
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate must be publishing the interaction class
Post-conditions
The transporation type is changed for the specified interaction class
Exceptions
Interaction class not defined
Federate not publishing the interaction class
Invalid transportation type
Federate is not a federation execution member
RTI internal error
Related Service
The data ordering type for each interaction is defaulted from the interaction class description in the RID. A federate may choose to change the data ordering type during execution. Invoking the Change Interaction Order Type service will change the data ordering type for all future Send Interaction service calls for the specified interaction class.
Supplied Parameters
An interaction class
A data ordering type
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate must be publishing the interaction class
Post-conditions
The data ordering type is changed for the specified interaction class
Exceptions
Interaction class not defined
Federate not publishing the interaction class
Invalid data ordering type
Federate is not a federation execution member
RTI internal error
Related Service
Change Interaction Transportation Type
The Request Attribute Value Update service is used to stimulate the update of values of specified attributes. When this service is used, the RTI will solicit the current values of the specified attributes from their owners using the Provide Attribute Value Update service. When an object class is specified, the RTI will solicit the specified attributes for all the objects of that class. The Request Attribute Value Update service is intended to be used in exceptional situations, and is not intended to be used to build a "pull" system.
Supplied Parameters
Object ID or object class
A set of attribute names
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The request for the updated attribute values has been received by the RTI
Exceptions
Invalid object ID
Object class not defined in RID
Attribute name(s) not defined in the RID
Federate is not a federation execution member
RTI internal error
Related Services
Provide Attribute Value Update +
Requests the current values for attributes owned by the federate for a given object. The federate should respond to the Provide Attribute Value Update service with an invocation of the Update Attribute Values service to provide the requested attribute values to the federation.
Supplied Parameters
An object ID
A set of attribute names
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate owns the specified attributes
Post-conditions
The federate has been notified to provide updates of the specified attribute values
Exceptions
Object not known
Attribute name not known
Federate internal error
Related Services
Request Attribute Value Update
Event retraction refers to the ability of a federate to retract (sometimes called cancel or unschedule) a previously scheduled event. This is a common discrete-event simulation primitive often used to model interrupts and other preemptive behaviors. Event retraction is also utilized by optimistic federates to implement mechanisms such as "anti-messages." The Update Attribute Values and Send Interaction RTI services return a handle for the event that is used to specify the event that is to be retracted. See of "HLA Time Management: Design Document" [HLA TM].
Supplied Parameters
A retraction handle
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate has previously issued Update Attribute Values and Send Interaction service calls and obtained the retraction handles.
Post-conditions
The RTI is informed that the federate desires to retract the specified event
Exceptions
Invalid retraction handle
RTI internal error
Related Services
Event retraction refers to the ability of a federate to retract (sometimes called cancel or unschedule) a previously scheduled event. If the RTI receives a Retract service call for an event that has already been delivered to a federate, the Reflect Retraction service is invoked on the federates that received that event. See of "HLA Time Management: Design Document" [HLA TM].
Supplied Parameters
A retraction handle
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The retracted event has been delivered to the federate
Post-conditions
The federate has been directed to retract the specified event
Exceptions
Event not known
Federate internal error
Related Services
In Figure 3, the federate on the left owns an object attribute that it is attempting to transfer to some other federate. In step 1, the federate invokes the Request Attribute Ownership Divestiture service with the object ID and name of the attribute to be transferred. The RTI then invokes the Request Attribute Ownership Assumption service on all federates that have indicated the ability to publish this attribute with the Publish Object Class service or, if federate names were given in the Request Attribute Ownership Divestiture invocation, just the specified federates. Upon receipt of an Request Attribute Ownership Assumption invocation, a federate returns the attribute name if it wishes to compete for ownership of that attribute. The RTI selects a recipient for the attribute ownership from the set of federates that make ownership requests and completes the transfer, in step 3, with the invocation of the Attribute Ownership Divestiture Notification service on the divesting federate and Attribute Ownership Acquisition Notification on the acquiring federate.
Figure 3. Federate Divesting Attribute Ownership
Figure 4. Federate Acquiring Attribute Ownership
Tells the RTI that the federate no longer wants to own the specified attributes of the specified objects. The federate supplies an object ID and set of attribute names.
Options:
1. The federate can specify which federate(s) should take ownership of the released attributes, otherwise any federate can compete to own them.
2. The federate can indicate if the desired ownership divestiture is to be negotiated or unconditional. If the divestiture is negotiated, ownership will be transferred only if some federates accepts it. An unconditional transfer will relieve the divesting federate of the ownership without regard to the existence of an accepting federate.
The federate must continue its publication responsibility for the specified attributes until it receives permission to stop through a positive Attribute Ownership Divestiture Notification service. The use of this service is illustrated in figure 3.
Supplied Parameters
An object ID
A set of attribute names
Ownership divesiture condition (negotiated or unconditional)
A user-supplied tag
Optional federate name list
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate owns the attributes specified in the service call
Post-conditions
No change in attribute ownership
The federate has informed the RTI of its intent to divest ownership of the specified attributes
Exceptions
Invalid object ID
Attribute name(s) not defined in the RID
Federate does not own the specified attributes
Invalid divestiture condition
Invalid candidate federate name
Federate is not a federation execution member
RTI internal error
Related Services
Request Attribute Ownership Assumption +
Attribute Ownership Divestiture Notification +
Attribute Ownership Acquisition Notification +
Informs the federate that the specified attributes for the specified object are available for transfer of ownership to the federate as a result of some other federation member invoking a Request Attribute Ownership Divestiture service. The RTI supplies an object ID and set of attribute names. The federate returns the subset of the supplied attribute names for which it is willing to assume ownership. The federate will be notified as to whether or not it received ownership of the attributes a subsequent invocation of the Attribute Ownership Acquisition Notification service. The use of this service is illustrated in figure 3.
Supplied Parameters
An object ID
A set of attribute names
A user-supplied tag
A federate handle and a federation execution name
Returned Parameters
Set of attribute names
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate is publishing and subscribing to the specified attributes
Post-conditions
No change in attribute ownership
The RTI has been informed of the set of attributes for which the federate is willing to assume ownership
Exceptions
Object not known
Attribute name not known
Federate internal error
Related Services
Request Attribute Ownership Divestiture
Attribute Ownership Divestiture Notification +
Attribute Ownership Acquisition Notification +
Notifies the federate of the result of an invocation of the Request Attribute Ownership Divestiture service. The service provides the federate with the set of attributes that it no longer owns. Upon this notification, the federate should stop updating the specified attribute values. The federate may receive multiple notifications for a single invocation of the Request Attribute Ownership Divestiture service since different federates may wish to become the owner of different attributes. The use of this service is illustrated in figure 3.
Supplied Parameters
An object ID
The set of released attribute names
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate has previously attempted to divest ownership of the specified attributes
Post-conditions
The federate does not own the specified attributes
Exceptions
Object not known
Attribute name not known
Federate internal error
Related Services
Request Attribute Ownership Divestiture
Request Attribute Ownership Assumption +
Attribute Ownership Acquisition Notification +
Notifies the federate of the result of an invocation of the Request Attribute Ownership Acquisition service or Request Attribute Ownership Assumption service. The service supplies the set of attributes that the federate has acquired. The federate may then begin updating those attribute values. The federate may receive multiple notifications for a single invocation of the Request Attribute Ownership Acquisition service since various federates may wish to become the owner of different attributes. The use of this service is illustrated in figures 3 and 4.
Supplied Parameters
An object ID
A set of acquired attribute names
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate has previously attempted to acquire ownership of the specified attributes
Some other federate is willing to divest itself of ownership of the specified attributes
Post-conditions
The federate owns the specified attributes
Exceptions
Object not known
Attribute name not known
Federate internal error
Related Services
Request Attribute Ownership Divestiture
Request Attribute Ownership Assumption +
Attribute Ownership Divestiture Notification +
Requests the privilege to own the specified attributes of the specified object. The federate supplies an object ID and set of attribute names. Before attempting to acquire ownership of an attribute, the federate should be reflecting the attribute value so it has the current attribute values. The federate may receive one or more Attribute Ownership Acquisition Notification invocations for each invocation of this service. The use of this service is illustrated in figure 4.
Supplied Parameters
An object ID
A set of attribute names
A user-supplied tag
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate must be both publishing and subscribing to the specified attributes
The federate must not own the specified attributes
Post-conditions
The RTI has been informed of the federates desire to acquire ownership of the specified attributes
Exceptions
Invalid object ID
Federate not publishing the object class
Federate not subscribing to the object class
Attribute name(s) not defined in the RID
Federate not publishing the object attribute
Federate not subscribing to the object attribute
Federate already owns specified attributes
Federate is not a federation execution member
RTI internal error
Related Services
Request Attribute Ownership Release +
Attribute Ownership Acquisition Notification +
Requests that the federate release ownership of the specified attributes of the specified object. The Request Attribute Ownership Release service provides an object ID and set of attribute names and is only invoked as the result of a Request Attribute Ownership Acquisition service invocation by some other federate. The federate returns the subset of the supplied attributes for which it is willing to release ownership. The use of this service is illustrated in figure 4.
Supplied Parameters
An object ID
A set of requested attribute names for release
A user-supplied tag
A federate handle and a federation execution name
Returned Parameters
Set of candidate attribute names for release
Pre-conditions
The federation execution exists
The federate has joined that federation execution
The federate must own the specified attributes
Post-conditions
The RTI has been informed of the set of attributes of which the federate is willing to release ownership
Exceptions
Object not known
Attribute name not known
Federate internal error
Related Services
Request Attribute Ownership Acquisition
Attribute Ownership Acquisition Notification +
The Query Attribute Ownership service is used to determine if the specified attribute of the specified object ID is owned and, if so, by which federate. The federate supplies an object ID and attribute name. The service returns the federate name of the attribute owner (if the attribute is owned) or an indication that the attribute is available for acquisition.
Supplied Parameters
An object ID
An attribute name
A federate handle and a federation execution name
Returned Parameters
Federate name of the owner
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The RTI has informed the federate which federate owns the specified attribute
Exceptions
Invalid object ID
Attribute name(s) not defined in the RID
Federate is not a federation execution member
RTI internal error
Related Services
None
Requests a current estimate of the federation time. Federation time is defined to be the minimum of Lower Bound Time Stamp (LBTS) and the current value of the federate's Logical Time (LT).
Supplied Parameters
A federate handle and a federation execution name
Returned Parameters
The current minimum of LBTS and LT
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The federate receives the current value of federation time
Exceptions
Federate is not a federation execution member
RTI internal error
Related Services
Request Minimum Next Event Time
Requests the current value of LBTS.
Supplied Parameters
A federate handle and a federation execution name
Returned Parameters
The current value of LBTS
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The federate receives the current value of LBTS
Exceptions
Federate is not a federation execution member
RTI internal error
Related Services
Request Minimum Next Event Time
Requests the current value of the federate's Logical Time (LT).
Supplied Parameters
A federate handle and a federation execution name
Returned Parameters
The current value of LT.
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The federate receives the current value of LT
Exceptions
Federate is not a federation execution member
RTI internal error
Related Services
Request Minimim Next Event Time
Requests the minimum of LBTS and the time stamp of the next Time Stamp Ordered (TSO) message that is held by the RTI for delivery to the requesting federate.
Supplied Parameters
A federate handle and a federation execution name
Returned Parameters
The current minimum of LBTS and the head of the TSO queue (if it contains a message).
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The federate receives the minimum next event time.
Exceptions
Federate is not a federation execution member
RTI internal error
Related Services
Sets the desired value of the federate's lookahead.
Supplied Parameters
A desired value of lookahead
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The RTI is informed of the federate's new value of lookahead
Exceptions
Federate is not a federation execution member
RTI internal error
Related Services
Queries the RTI for the current value of the federate's lookahead. The current value of lookahead may differ temporarily from the desired lookahead given in the Set Lookahead service if the value of lookahead has been reduced.
Supplied Parameters
A federate handle and a federation execution name
Returned Parameters
The federate's current value of lookahead
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The federate receives the current value of it's lookahead
Exceptions
Federate is not a federation execution member
RTI internal error
Related Services
The Time Advance Request service requests an advance of the federate's logical time. Invocation of this service implies that the following messages are eligible for delivery to the federate: (i) all incoming receive ordered messages, and (ii) all messages using other ordering services with time stamp less than or equal to the specified time. After invoking Time Advance Request, the messages are passed to the federate by the RTI invoking the Discover Object, Remove Object, Receive Interaction and Reflect Attribute Values services. By invoking Time Advance Request with the specified time, the federate is guaranteeing that it will not generate a Time Stamp Ordered (TSO) message at any time in the future with time stamp less than the specified time, plus that federate's current lookahead. A Time Advance Grant completes this request and indicates to the federate that it has advanced its logical time to the specified time.
Supplied Parameters
A value of federation time
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The RTI is informed of the federate's desire to advance time
Exceptions
Invalid federation time
Time Advance Request or Next Event Request, or Flush Queue Request already pending
Federate is not a federation execution member
RTI internal error
Related Services
The Next Event Request service requests the next TSO message from the RTI, provided that message has a time stamp no greater than the logical time specified in the request. The invocation of this service implies that the following messages are eligible for delivery to the federate:
Supplied Parameters
A value of federation time
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The RTI is informed of the federate's desire to advance time
Exceptions
Invalid federation time
Time Advance Request or Next Event Request, or Flush Queue Request already pending
Federate is not a federation execution member
RTI internal error
Related Services
The Flush Queue Request releases all messages stored in the RTI's internal queues and delivers them to the federate invoking this service. Time Stamp Ordered (TSO) messages are delivered, despite the fact that the RTI may not be able to guarantee future messages containing a smaller time stamp could arrive. If the federate does not receive any additional TSO messages with time stamp less than the specified time, then the federate's LT may be advanced up to the specified time. Received messages are delivered to the federate by the RTI calling the Discover Object, Remove Object, Receive Interaction or Reflect Attribute Values services provided by the federate. A Time Advance Grant completes this request and indicates to the federate that it has advanced its logical time to the minimum of the specified time, LBTS, and the time stamp of the next TSO message to be received.
Supplied Parameters
A value of federation time
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Post-conditions
The RTI is informed of the federate's desire to advance time
Exceptions
Invalid federation time
Time Advance Request or Next Event Request, or Flush Queue Request already pending
Federate is not a federation execution member
RTI internal error
Related Services
Invocation of this service indicates a prior request to advance Logical Time (LT) has been honored. The parameter of this service indicates that LT for the federate has been advanced to this value and no additional Time Stamped Ordered (TSO) messages will be delivered in the future with a time stamp less than this value.
Supplied Parameters
A value of federation time
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The federation execution exists
The federate has joined that federation execution
Any of the Time Advance Request, Next Event Request or Flush Queue Request services were previously invoked
Post-conditions
No additional TSO messages will be received with a time stamp less than the provided time
Exceptions
Invalid federation time
Time Advance Request, Next Event Request or Flush Queue Request was not pending
Federate internal error
Related Services
To use routing spaces, each federation defines the allowable routing spaces for the federation execution, including the dimensions (variables) of the routing space. Routing spaces are then initialized in the RID with a name and the number of dimensions.
Using declaration management services (Section 3), federates specify by class and attribute name and by interaction class, the types of data they will send or receive. Routing spaces are used by federates to specify the distribution conditions for the specific data they are sending or expect to receive. Each federate decides which of the federation routing spaces are useful to them and defines the portions (subsets) of those routing spaces that specify (from the federate's perspective) regions, or logical areas of interest particular to the federate, by putting bounds (extents) on the dimensions of the selected routing space. The federate then uses these regions to both specify conditions (Create Subscription Region) under which they expect to receive the object state data and interactions they specified using declaration management services (Subscribe Object Class Attribute and Subscribe Interaction Class ) and to specify conditions under which they are providing data (Create Update Region and Associate Update Region).
Specifying a subscription region, the federate tells the RTI to only deliver data which fall within the bounds (extents) of the region specified by that federate. Specifying an update region and associating that update region with a particular object instance, means that the federate will ensure that the characteristics of the object instance or interaction which map to the dimensions of the routing space fall within the bounds (extents) of the associated region at the time that the attribute update or send interaction call is issued. This implies that the federate is monitoring these added characteristics for each of the attributes owned by the federate. As the state of the objects change, the federate may need to either adjust the bounds on the associated regions (Modify Region ) or change the association to another region (Associate Update Region).
The routing space, regions, and association data is used by the RTI to distribute data. When an update region and subscription regions of different federates overlap, the RTI ensures that the attribute updates and interactions associated with that update region are routed to federates with subscription regions which overlap the sender's update region.
It is important to note that the dimensions of routing spaces need not necessarily map to attributes in the RID. The data distribution management services provide a federation the capability to specify data distribution on characteristics of objects other than those exchanged as part of federation execution. By specifying routing spaces and regions using attributes specified in the RID, the data distribution management services provide a mechanism to control data distribution based on values of attributes.
Each federate can create multiple update and subscription regions. Update regions may be associated with individual objects that have been registered with the RTI. As an example, a federate might have a subscription region for each sensor system being simulated.
Figure 5 shows one update region (U1) and two subscription regions (S1, S2) within a two dimensional routing space. In this example, U1 and S1 overlap and therefore attributes and interactions associated with U1 will be routed by the RTI to the federate that created S1. In contrast U1 and S2 do not overlap and attributes and interactions will not be routed from U1 to the federate that created S2.
Figure 5. Routing Space Example
Creates an update region that is a subset of the specified routing space. The extent set bounds the region within the routing space.
Supplied Parameters
A routing space handle
A set of extents
A federate handle and a federation execution name
Returned Parameters
An update region handle
Pre-conditions
The routing space is defined in the RID
Post-conditions
An update region exists that is a subset of the specified routing space
Exceptions
Routing space not defined in the RID
Invalid extents
Federate is not an execution member
RTI internal error
Related Services
Creates a subscription region that is a subset of the specified routing space. The extent set bounds the region within the routing space. In creating a subscription region, the federate tells the RTI to only deliver data which fall within the bounds (extents) of the region.
Supplied Parameters
A routing space handle
A set of extents
A federate handle and a federation execution name
Returned Parameters
A subscription region handle
Pre-conditions
The routing space is defined in the RID
Post-conditions
A subscription region exists that is a subset of the specified routing space
Exceptions
Routing space not defined in the RID
Invalid extents
Federate is not a federation execution member
RTI internal error
Related Services
Subscribe Object Class Attribute
This service associates an update region with
The association is used by the Update Attribute Values and Send Interaction services to route data to subscribers whose subscription regions overlap the specified update region.
Supplied Parameters
A update region handle
For interaction classes:
An interaction class
or for objects:
An object ID
A set of attributes
An indication to form or break the association
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The update region exists
The object ID is registered
The federate is publishing the specified attributes, or
The federate is publishing the specified interaction class
Post-conditions
The update region is associated with the object ID or interaction class for future Update Attribute Values or Send Interactions service invocations
Exceptions
Region not known
Invalid object ID
Attributes not defined in the RID
Interaction class not defined in the RID
Federate is not a federation execution member
RTI internal error
Related Services
Change Thresholds provides the federate with the new values of the thresholds for each of the dimensions of a routing space. The new threshold data should be used by the federate to decided when to invoke the Modify Region service.
Supplied Parameters
An update or subscription region handle
A set of thresholds
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The region exists
Post-conditions
The federate in informed of the new threshold values for the region
Exceptions
Region not known
Federate internal error
Related Services
Modify Region changes the bounds of the update or subscription region to reflect the specified set of extents.
Supplied Parameters
An update or subscription region handle
A set of extents
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The region exists
Post-conditions
The region has a new extent
Exceptions
Region not known
Invalid extents
Federate is not a federation execution member
RTI internal error
Related Services
Deletes the specified update or subscription region.
Supplied Parameters
An update or subscription region handle
A federate handle and a federation execution name
Returned Parameters
None
Pre-conditions
The region exists
Post-conditions
The region no longer exists
The region is no longer associated with any interaction class or object attributes
Exceptions
Region not known
Federate is not a federation execution member
RTI internal error
Related Services
[HLA OMT] "High Level Architecture Object Model Template", Defense Modeling and Simulation Office, latest version on WEB.
[HLA DDM] "HLA Data Distribution Management Design Document", Defense Modeling and Simulation Office, version release TBD.
[HLA TM] "HLA Time Management: Design Document", Defense Modeling and Simulation Office, latest version on WEB.