Department of Defense

High Level Architecture

Version 1.0 Runtime Infrastruture

C++ Application Programmer's Interface

May 15, 1997

Parameter Passing Memory Conventions
Base Types
RTI Types
RTI Class Definition

Federation Management

  1. Create Federation Execution
  2. Destroy Federation Execution
  3. Join Federation Execution
  4. Resign Federation Execution
  5. Request Pause
  6. Initiate Pause +
  7. Pause Achieved
  8. Request Resume
  9. Initiate Resume +
  10. Resume Achieved
  11. Request Federation Save
  12. Initiate Federate Save +
  13. Federate Save Begun
  14. Federate Save Achieved
  15. Request Restore
  16. Initiate Restore +
  17. Restore Achieved

Declaration Management

  1. Publish Object Class
  2. Publish Interaction Class
  3. Subscribe Object Class Attribute
  4. Subscribe Interaction Class
  5. Control Updates +
  6. Control Interactions +

Object Management

  1. Request ID
  2. Register Object
  3. Update Attribute Values
  4. Discover Object +
  5. Reflect Attribute Values +
  6. Send Interaction
  7. Receive Interaction +
  8. Delete Object
  9. Remove Object +
  10. Change Attribute Transportation Type
  11. Change Attribute Order Type
  12. Change Interaction Transportation Type
  13. Change Interaction Order Type
  14. Request Attribute Value Update
  15. Provide Attribute Value Update +
  16. Retract
  17. Reflect Retraction +

Ownership Management

  1. Request Attribute Ownership Divestiture
  2. Request Attribute Ownership Assumption +
  3. Attribute Ownership Divestiture Notification +
  4. Attribute Ownership Acquisition Notification +
  5. Request Attribute Ownership Acquisition
  6. Request Attribute Ownership Release +
  7. Query Attribute Ownership

Time Management

  1. Request Federation Time
  2. Request LBTS
  3. Request Federate Time
  4. Request Minimum Next Event Time
  5. Set Lookahead
  6. Request Lookahead
  7. Time Advance Request
  8. Next Event Request
  9. Flush Queue Request
  10. Time Advance Grant +

Data Distribution Management

  1. Create Update Region
  2. Create Subscription Region
  3. Associate Update Region
  4. Change Thresholds +
  5. Modify Region
  6. Delete Region

RTI Support Services

  1. Get Object Class Handle
  2. Get Object Class Name
  3. Get Attribute Handle
  4. Get Attribute Name
  5. Get Interaction Class Handle
  6. Get Interaction Class Name
  7. Get Parameter Handle
  8. Get Parameter Name
  9. Get Space Handle
  10. Get Space Name
  11. Get Federate Handle
  12. Get Federate Name
  13. Set Time Regulating
  14. Set Time Constrained
  15. Dequeue FIFO Asynchronously
  16. Tick
  17. Constructor
  18. Destructor

Parameter Passing Memory Conventions

Parameter CodeExplanation
C1In parameter by value.
C2Out parameter by reference.
C3Function return by value.
C4In parameter by const reference. Caller provides memory. Caller may free memory or overwrite it upon completion of the call. Callee must copy during the call anything it wishes to save beyond completion of the call. Parameter type must define const accessor methods.
C5Out parameter by reference. Caller provides reference to object. Callee constructs an instance on the heap (new) and returns. The caller destroys the instance (delete) at its leisure.
C6Function return by reference. Callee constructs an instance on the heap (new) and returns a reference. The caller destroys the instance (delete) at its leisure.

2.1 Create Federation Execution

void createFederationExecution ( const FederationExecutionName executionName) // supplied C4 throw ( FederationExecutionAlreadyExists, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.2 Destroy Federation Execution

void destroyFederationExecution ( const FederationExecutionName executionName) // supplied C4 throw ( FederatesCurrentlyJoined, FederationExecutionDoesNotExist, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.3 Join Federation Execution

FederateHandle // returned C3 joinFederationExecution ( const FederateName yourName, // supplied C4 const FederationExecutionName executionName, // supplied C4 FederateAmbassadorPtr federateAmbassadorReference) // supplied C1 throw ( FederateAlreadyExecutionMember, FederationExecutionDoesNotExist, CouldNotOpenFED, ErrorReadingFED, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.4 Resign Federation Execution

void resignFederationExecution ( ResignAction theAction) // supplied C1 throw ( FederateOwnsAttributes, FederateNotExecutionMember, InvalidResignAction, ConcurrentAccessAttempted, RTIinternalError); void resignFederationExecution ( // not implemented in 1.0 FederateHandle theFederate, // supplied C1 ResignAction theAction) // supplied C1 throw ( FederateOwnsAttributes, FederateDoesNotExist, FederationExecutionDoesNotExist, FederateNotExecutionMember, InvalidResignAction, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

2.5 Request Pause

void requestPause ( const PauseLabel label) // supplied C4 throw ( FederationAlreadyPaused, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.6 Initiate Pause +

virtual void initiatePause ( const PauseLabel label) // supplied C4 throw ( FederateAlreadyPaused, FederateInternalError) = 0;

2.7 Pause Achieved

void pauseAchieved ( const PauseLabel label) // supplied C4 throw ( UnknownLabel, NoPauseRequested, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.8 Request Resume

void requestResume () throw ( FederationNotPaused, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.9 Initiate Resume +

virtual void initiateResume () throw ( FederateNotPaused, FederateInternalError) = 0;

2.10 Resume Achieved

void resumeAchieved () throw ( NoResumeRequested, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.11 Request Federation Save

void requestFederationSave ( const SaveLabel label, // supplied C4 FederationTime theTime) // supplied C1 throw ( FederationTimeAlreadyPassed, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void requestFederationSave ( const SaveLabel label) // supplied C4 throw ( SaveInProgress, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.12 Initiate Federate Save +

virtual void initiateFederateSave ( const SaveLabel label) // supplied C4 throw ( UnableToPerformSave, FederateInternalError) = 0; virtual void initiateFederateSave ( // not implemented in 1.0 const SaveLabel label, // supplied C4 FederationTime theTime) // supplied C1 throw ( InvalidFederationTime, UnableToPerformSave, FederateInternalError) = 0;

2.13 Federate Save Begun

void federateSaveBegun () throw ( SaveNotInitiated, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void federateSaveBegun ( // not implemented in 1.0 FederationTime theTime) // supplied C1 throw ( SaveNotInitiated, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError);

2.14 Federate Save Achieved

void federateSaveAchieved () throw ( SaveNotInitiated, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError); void federateSaveNotAchieved () throw ( SaveNotInitiated, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError);

2.15 Request Restore

void requestRestore ( const SaveLabel label) // supplied C4 throw ( SpecifiedSaveLabelDoesNotExist, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

2.16 Initiate Restore +

virtual void initiateRestore ( const SaveLabel label) // supplied C4 throw ( SpecifiedSaveLabelDoesNotExist, CouldNotRestore, FederateInternalError) = 0;

2.17 Restore Achieved

void restoreAchieved ( ) throw ( RestoreNotRequested, RTIcanNotRestore, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError); void restoreNotAchieved () throw ( RestoreNotRequested, RTIcanNotRestore, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError);

3.1 Publish Object Class

void publishObjectClass ( ObjectClassHandle theClass, // supplied C1 const AttributeHandleSet& attributeList) // supplied C4 throw ( ObjectClassNotDefined, AttributeNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void unpublishObjectClass ( ObjectClassHandle theClass) // supplied C1 throw ( ObjectClassNotDefined, FederateOwnsAttributes, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

3.2 Publish Interaction Class

void publishInteractionClass ( InteractionClassHandle theInteraction) // supplied C1 throw ( InteractionClassNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void unpublishInteractionClass ( InteractionClassHandle theInteraction) // supplied C1 throw ( InteractionClassNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

3.3 Subscribe Object Class Attribute

void subscribeObjectClassAttribute ( ObjectClassHandle theClass, // supplied C1 const AttributeHandleSet& attributeList) // supplied C4 throw ( ObjectClassNotDefined, AttributeNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void subscribeObjectClassAttribute ( // not implemented in 1.0 ObjectClassHandle theClass, // supplied AttributeHandle theAttribute, // supplied Region theRegion) // supplied throw ( ObjectClassNotDefined, AttributeNotDefined, RegionNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService); void unsubscribeObjectClassAttribute ( ObjectClassHandle theClass) // supplied C1 throw ( ObjectClassNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void unsubscribeObjectClassAttribute ( // not implemented in 1.0 ObjectClassHandle theClass, // supplied Region theRegion) // supplied throw ( ObjectClassNotDefined, RegionNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

3.4 Subscribe Interaction Class

void subscribeInteractionClass ( InteractionClassHandle theClass) // supplied C1 throw ( InteractionClassNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void subscribeInteractionClass ( // not implemented in 1.0 InteractionClassHandle theClass, // supplied Region theRegion) // supplied throw ( InteractionClassNotDefined, RegionNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService); void unsubscribeInteractionClass ( InteractionClassHandle theClass) // supplied C1 throw ( InteractionClassNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void unsubscribeInteractionClass ( // not implemented in 1.0 InteractionClassHandle theClass, // supplied Region theRegion) // supplied throw ( InteractionClassNotDefined, RegionNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

3.5 Control Updates +

virtual void startUpdates ( ObjectClassHandle theClass, // supplied C1 const AttributeHandleSet& theAttributes) // supplied C4 throw ( ObjectClassNotPublished, AttributeNotPublished, FederateInternalError) = 0; virtual void stopUpdates ( ObjectClassHandle theClass, // supplied C1 const AttributeHandleSet& theAttributes) // supplied C4 throw ( ObjectClassNotPublished, AttributeNotPublished, FederateInternalError) = 0;

3.6 Control Interactions +

virtual void startInteractionGeneration ( InteractionClassHandle theHandle) // supplied C1 throw ( InteractionClassNotPublished, FederateInternalError) = 0; virtual void stopInteractionGeneration ( InteractionClassHandle theHandle) // supplied C1 throw ( InteractionClassNotPublished, FederateInternalError) = 0;

4.1 Request ID

void requestID ( ObjectIDcount idCount, // supplied C1 ObjectID& firstID, // returned C2 ObjectID& lastID) // returned C2 throw ( TooManyIDsRequested, IDsupplyExhausted, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.2 Register Object

void registerObject ( ObjectClassHandle theClass, // supplied C1 ObjectID theObject) // supplied C1 throw ( ObjectClassNotDefined, ObjectClassNotPublished, InvalidObjectID, ObjectAlreadyRegistered, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.3 Update Attribute Values

EventRetractionHandle // returned C3 updateAttributeValues ( ObjectID theObject, // supplied C1 const AttributeHandleValuePairSet& theAttributes, // supplied C4 FederationTime theTime, // supplied C1 const UserSuppliedTag theTag) // supplied C4 throw ( ObjectNotKnown, AttributeNotDefined, AttributeNotOwned, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.4 Discover Object +

virtual void discoverObject ( ObjectID theObject, // supplied C1 ObjectClassHandle theObjectClass, // supplied C1 FederationTime theTime, // supplied C1 const UserSuppliedTag theTag, // supplied C4 EventRetractionHandle theHandle) // supplied C1 throw ( CouldNotDiscover, ObjectClassNotKnown, InvalidFederationTime, FederateInternalError) = 0;

4.5 Reflect Attribute Values +

virtual void reflectAttributeValues ( ObjectID theObject, // supplied C1 const AttributeHandleValuePairSet& theAttributes, // supplied C4 FederationTime theTime, // supplied C1 const UserSuppliedTag theTag, // supplied C4 EventRetractionHandle theHandle) // supplied C1 throw ( ObjectNotKnown, AttributeNotKnown, InvalidFederationTime, FederateInternalError) = 0;

4.6 Send Interaction

EventRetractionHandle // returned C3 sendInteraction ( InteractionClassHandle theInteraction, // supplied C1 const ParameterHandleValuePairSet& theParameters, // supplied C4 FederationTime theTime, // supplied C1 const UserSuppliedTag theTag) // supplied C4 throw ( InteractionClassNotDefined, InteractionClassNotPublished, InteractionParameterNotDefined, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.7 Receive Interaction +

virtual void receiveInteraction ( InteractionClassHandle theInteraction, // supplied C1 const ParameterHandleValuePairSet& theParameters, // supplied C4 FederationTime theTime, // supplied C1 const UserSuppliedTag theTag, // supplied C4 EventRetractionHandle theHandle) // supplied C1 throw ( InteractionClassNotKnown, InteractionParameterNotKnown, InvalidFederationTime, FederateInternalError) = 0;

4.8 Delete Object

EventRetractionHandle // returned C3 deleteObject ( ObjectID objectID, // supplied C1 FederationTime theTime, // supplied C1 const UserSuppliedTag theTag) // supplied C4 throw ( ObjectNotKnown, DeletePrivilegeNotHeld, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.9 Remove Object +

virtual void removeObject ( ObjectID theObject, // supplied C1 ObjectRemovalReason theReason, // supplied C1 FederationTime theTime, // supplied C1 const UserSuppliedTag theTag, // supplied C4 EventRetractionHandle theHandle) // supplied C1 throw ( ObjectNotKnown, InvalidFederationTime, FederateInternalError) = 0; virtual void removeObject ( ObjectID theObject, // supplied C1 ObjectRemovalReason theReason) // supplied C1 throw ( ObjectNotKnown, InvalidFederationTime, FederateInternalError) = 0;

4.10 Change Attribute Transportation Type

void changeAttributeTransportType ( ObjectID theObject, // supplied C1 const AttributeHandleSet& theAttributes, // supplied C4 TransportType theType) // supplied C1 throw ( ObjectNotKnown, AttributeNotDefined, AttributeNotOwned, InvalidTransportType, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.11 Change Attribute Order Type

void changeAttributeOrderType ( ObjectID theObject, // supplied C1 const AttributeHandleSet& theAttributes, // supplied C4 OrderType theType) // supplied C1 throw ( ObjectNotKnown, AttributeNotDefined, AttributeNotOwned, InvalidOrderType, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.12 Change Interaction Transportation Type

void changeInteractionTransportType ( InteractionClassHandle theClass, // supplied C1 TransportType theType) // supplied C1 throw ( InteractionClassNotDefined, InteractionClassNotPublished, InvalidTransportType, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.13 Change Interaction Order Type

void changeInteractionOrderType ( InteractionClassHandle theClass, // supplied C1 OrderType theType) // supplied C1 throw ( InteractionClassNotDefined, InteractionClassNotPublished, InvalidOrderType, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.14 Request Attribute Value Update

void requestObjectAttributeValueUpdate ( ObjectID theObject, // supplied C1 const AttributeHandleSet& theAttributes) // supplied C4 throw ( AttributeNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void requestClassAttributeValueUpdate ( ObjectClassHandle theClass, // supplied C1 const AttributeHandleSet& theAttributes) // supplied C4 throw ( ObjectClassNotDefined, AttributeNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.15 Provide Attribute Value Update +

virtual void provideAttributeValueUpdate ( ObjectID theObject, // supplied C1 const AttributeHandleSet& theAttributes) // supplied C4 throw ( ObjectNotKnown, AttributeNotKnown, FederateInternalError) = 0;

4.16 Retract

void retract ( EventRetractionHandle theHandle) // supplied C1 throw ( InvalidRetractionHandle, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

4.17 Reflect Retraction +

virtual void reflectRetraction ( EventRetractionHandle theHandle) // supplied C1 throw ( EventNotKnown, FederateInternalError) = 0;

5.1 Request Attribute Ownership Divestiture

void requestAttributeOwnershipDivestiture ( ObjectID theObject, // supplied C1 const AttributeHandleSet& theAttributes, // supplied C4 OwnershipDivestitureCondition theCondition, // supplied C1 const UserSuppliedTag theTag) // supplied C4 throw ( ObjectNotKnown, AttributeNotDefined, AttributeNotOwned, InvalidDivestitureCondition, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void requestAttributeOwnershipDivestiture ( ObjectID theObject, // supplied C1 const AttributeHandleSet& theAttributes, // supplied C4 OwnershipDivestitureCondition theCondition, // supplied C1 const UserSuppliedTag theTag, // supplied C4 const FederateHandleSet& theCandidates) // supplied C4 throw ( ObjectNotKnown, AttributeNotDefined, AttributeNotOwned, InvalidDivestitureCondition, FederateDoesNotExist, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

5.2 Request Attribute Ownership Assumption +

virtual AttributeHandleSet& // returned C6 requestAttributeOwnershipAssumption ( ObjectID theObject, // supplied C1 const AttributeHandleSet& offeredAttributes, // supplied C4 const UserSuppliedTag theTag) // supplied C4 throw ( ObjectNotKnown, AttributeAlreadyOwned, FederateInternalError) = 0; AttributeHandleSet& // returned C6 requestAttributeOwnershipAssumption ( ObjectID theObject, // supplied C1 const AttributeHandleSet& offeredAttributes) // supplied C4 throw ( ObjectNotKnown, AttributeAlreadyOwned, FederateInternalError);

5.3 Attribute Ownership Divestiture Notification +

virtual void attributeOwnershipDivestitureNotification ( ObjectID theObject, // supplied C1 const AttributeHandleSet& releasedAttributes) // supplied C4 throw ( ObjectNotKnown, AttributeNotKnown, FederateInternalError) = 0;

5.4 Attribute Ownership Acquisition Notification +

virtual void attributeOwnershipAcquisitionNotification ( ObjectID theObject, // supplied C1 const AttributeHandleSet& securedAttributes) // supplied C4 throw ( ObjectNotKnown, AttributeNotKnown, FederateInternalError) = 0;

5.5 Request Attribute Ownership Acquisition

void requestAttributeOwnershipAcquisition ( ObjectID theObject, // supplied C1 const AttributeHandleSet& desiredAttributes, // supplied C4 const UserSuppliedTag theTag) // supplied C4 throw ( ObjectNotKnown, ObjectClassNotPublished, ObjectClassNotSubscribed, AttributeNotDefined, AttributeNotPublished, AttributeNotSubscribed, FederateOwnsAttributes, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

5.6 Request Attribute Ownership Release +

virtual AttributeHandleSet& // returned C6 requestAttributeOwnershipRelease ( ObjectID theObject, // supplied C1 const AttributeHandleSet& candidateAttributes, // supplied C4 const UserSuppliedTag theTag) // supplied C4 throw ( ObjectNotKnown, AttributeNotKnown, FederateInternalError) = 0;

5.7 Query Attribute Ownership

void queryAttributeOwnership ( ObjectID theObject, // supplied C1 AttributeHandle theAttribute) // supplied C1 throw ( ObjectNotKnown, AttributeNotDefined, AttributeNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); virtual void informAttributeOwnership ( ObjectID theObject, // supplied C1 AttributeHandle theAttribute, // supplied C1 FederateHandle theOwner) // supplied C1 throw ( FederateInternalError) = 0; RTI::Boolean // returned C3 attributeIsOwnedByFederate ( ObjectID theObject, // supplied C1 AttributeHandle theAttribute) // supplied C1 throw ( ObjectNotKnown, AttributeNotDefined, AttributeNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.1 Request Federation Time

Federate Initiated FederationTime // returned C3 requestFederationTime () throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.2 Request LBTS

FederationTime // returned C3 requestLBTS () throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.3 Request Federate Time

FederationTime // returned C3 requestFederateTime () throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.4 Request Minimum Next Event Time

FederationTime // returned C3 requestMinNextEventTime () throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.5 Set Lookahead

void setLookahead ( FederationTimeDelta theLookahead) // supplied C1 throw ( InvalidFederationTimeDelta, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.6 Request Lookahead

FederationTimeDelta // returned C3 requestLookahead () throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.7 Time Advance Request

void timeAdvanceRequest ( FederationTime theTime) // supplied C1 throw ( TimeAdvanceAlreadyInProgress, FederationTimeAlreadyPassed, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void timeAdvanceRequestAvailable ( FederationTime theTime) // supplied C1 throw ( TimeAdvanceAlreadyInProgress, FederationTimeAlreadyPassed, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.8 Next Event Request

void nextEventRequest ( FederationTime theTime) // supplied C1 throw ( TimeAdvanceAlreadyInProgress, FederationTimeAlreadyPassed, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); void nextEventRequestAvailable ( FederationTime theTime) // supplied C1 throw ( TimeAdvanceAlreadyInProgress, FederationTimeAlreadyPassed, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.9 Flush Queue Request

void flushQueueRequest ( FederationTime theTime) // supplied C1 throw ( TimeAdvanceAlreadyInProgress, FederationTimeAlreadyPassed, InvalidFederationTime, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

6.10 Time Advance Grant +

virtual void timeAdvanceGrant ( FederationTime theTime) // supplied C1 throw ( InvalidFederationTime, TimeAdvanceWasNotInProgress, FederationTimeAlreadyPassed, FederateInternalError) = 0;

7.1 Create Update Region

void createUpdateRegion ( // not implemented in 1.0 SpaceHandle theSpace, // supplied ExtentSet& theExtents, // supplied Region& theRegion) // returned throw ( SpaceNotDefined, InvalidExtents, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

7.2 Create Subscription Region

void createSubscriptionRegion ( // not implemented in 1.0 SpaceName theSpace, // supplied ExtentSet& theExtents, // supplied Region& theRegion) // returned throw ( SpaceNotDefined, InvalidExtents, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

7.3 Associate Update Region

void associateUpdateRegion ( // not implemented in 1.0 Region theRegion, // supplied ObjectID theObject, // supplied AttributeHandleSet& theAttributes) // supplied throw ( RegionNotKnown, ObjectNotKnown, AttributeNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService); void associateUpdateRegion ( // not implemented in 1.0 Region theRegion, // supplied InteractionClassHandle theClass) // supplied throw ( RegionNotKnown, InteractionClassNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService); void disassociateUpdateRegion ( // not implemented in 1.0 Region theRegion, // supplied ObjectID theObject, // supplied AttributeHandleSet& theAttributes) // supplied throw ( RegionNotKnown, ObjectNotKnown, AttributeNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService); void disassociateUpdateRegion ( // not implemented in 1.0 Region theRegion, // supplied InteractionClassHandle theClass) // supplied throw ( RegionNotKnown, InteractionClassNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

7.4 Change Thresholds +

virtual void changeThresholds ( Region theRegion, // supplied ThresholdSet& theThresholds) // returned throw ( RegionNotKnown, FederateInternalError) = 0;

7.5 Modify Region

void modifyRegion ( // not implemented in 1.0 Region theRegion, // supplied ExtentSet& theExtents) // supplied throw ( RegionNotKnown, InvalidExtents, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

7.6 Delete Region

void deleteRegion ( // not implemented in 1.0 Region theRegion) // supplied throw ( RegionNotKnown, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

8.1 Get Object Class Handle

ObjectClassHandle // returned C3 getObjectClassHandle ( const ObjectClassName theName) // supplied C4 throw ( NameNotFound, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.2 Get Object Class Name

ObjectClassName // returned C6 getObjectClassName ( ObjectClassHandle theHandle) // supplied C1 throw ( ObjectClassNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.3 Get Attribute Handle

AttributeHandle // returned C3 getAttributeHandle ( const AttributeName theName, // supplied C4 ObjectClassHandle whichClass) // supplied C1 throw ( ObjectClassNotDefined, NameNotFound, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.4 Get Attribute Name

AttributeName // returned C6 getAttributeName ( AttributeHandle theHandle, // supplied C1 ObjectClassHandle whichClass) // supplied C1 throw ( ObjectClassNotDefined, AttributeNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.5 Get Interaction Class Handle

InteractionClassHandle // returned C1 getInteractionClassHandle ( const InteractionClassName theName) // supplied C4 throw ( NameNotFound, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.6 Get Interaction Class Name

InteractionClassName // returned C6 getInteractionClassName ( InteractionClassHandle theHandle) // supplied C1 throw ( InteractionClassNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.7 Get Parameter Handle

ParameterHandle // returned C1 getParameterHandle ( const ParameterName theName, // supplied C4 InteractionClassHandle whichClass) // supplied C1 throw ( InteractionClassNotDefined, NameNotFound, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.8 Get Parameter Name

ParameterName // returned C6 getParameterName ( ParameterHandle theHandle, // supplied C1 InteractionClassHandle whichClass) // supplied C1 throw ( InteractionClassNotDefined, InteractionParameterNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.9 Get Space Handle

SpaceHandle // returned C1 getSpaceHandle ( // not implemented in 1.0 const SpaceName theName) // supplied C4 throw ( NameNotFound, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

8.10 Get Space Name

SpaceName // returned C6 getSpaceName ( // not implemented in 1.0 const SpaceHandle theHandle) // supplied C4 throw ( SpaceNotDefined, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

8.11 Get Federate Handle

FederateHandle // returned C1 getFederateHandle ( // not implemented in 1.0 const FederateName theName) // supplied C4 throw ( FederateDoesNotExist, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

8.12 Get Federate Name

FederateName // returned C6 getFederateName ( // not implemented in 1.0 FederateHandle theHandle) // supplied C1 throw ( FederateDoesNotExist, FederateNotExecutionMember, ConcurrentAccessAttempted, RTIinternalError, UnimplementedService);

8.13 Set Time Regulating

void turnRegulationOn() throw ( FederationTimeAlreadyPassed, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); FederationTime // returned C3 turnRegulationOnNow() throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); turnRegulationOff() throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.14 Set Time Constrained

void setTimeConstrained ( RTI::Boolean state) // supplied C1 throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.15 Dequeue FIFO Asynchronously

void dequeueFIFOasynchronously ( RTI::Boolean state) // supplied C1 throw ( FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError);

8.16 Tick

RTI::Boolean // returned C3 tick () throw ( SpecifiedSaveLabelDoesNotExist, ConcurrentAccessAttempted, RTIinternalError); RTI::Boolean // returned C3 tick ( TickTime minimum, // supplied C1 TickTime maximum) // supplied C1 throw ( SpecifiedSaveLabelDoesNotExist, ConcurrentAccessAttempted, RTIinternalError);

Constructor

RTIambassador() throw ( MemoryExhausted, RTIinternalError);

Destructor

~RTIambassador() throw ( RTIinternalError);

Base Types

//File baseTypes.hh //Included in RTI.hh #ifndef NULL #define NULL (0) #endif typedef unsigned short UShort; typedef short Short; typedef unsigned long ULong; typedef long Long; typedef double Double; typedef float Float; enum Boolean { RTI_FALSE = 0, RTI_TRUE}; class Exception { public: RTI::ULong _serial; char *_reason; const char *_name; Exception (const char *reason); Exception (RTI::ULong serial, const char *reason=NULL); Exception (const Exception &toCopy); virtual ~Exception (); Exception & operator = (const Exception &); friend ostream& operator << (ostream &, Exception *); }; #define RTI_EXCEPT(A) \ class A : public RTI::Exception { \ public: \ A () { _name = "RTI::"#A; } \ A (const char *reason) : Exception (reason) { _name = "RTI::"#A; } \ A (RTI::ULong serial, const char *reason=NULL) \ : Exception (serial, reason) { _name = "RTI::"#A; } \ };

RTI Types

//File RTItypes.hh //Included in RTI.hh #define MAX_FEDERATION 20 #define MAX_FEDERATE 20 #define MAX_FEDERATE_NAME_LENGTH 64 #define MAX_FEDERATION_NAME_LENGTH 64 #define MAX_OBJECT_CLASSES 100 #define MAX_INTERACTION_CLASSES 100 #define MAX_ATTRIBUTES_PER_CLASS 50 #define MAX_PARAMETERS_PER_CLASS 50 #define MAX_BYTES_PER_VALUE 4096 #define PRIVILEGE_TO_DELETE_HANDLE 0 #define ROOT_OBJECT_CLASS_HANDLE 0 #define ROOT_INTERACTION_CLASS_HANDLE 0 #define PRIVILEGE_TO_DELETE_NAME "privilegeToDelete" #define MAX_USER_TAG_LENGTH 30 #define RTI_VERSION "1.0R10" #define EPSILON (1.0e-9) #define POSITIVE_INFINITY (HUGE_VAL) RTI_EXCEPT(ArrayIndexOutOfBounds) RTI_EXCEPT(AttributeAlreadyOwned) RTI_EXCEPT(AttributeNotDefined) RTI_EXCEPT(AttributeNotKnown) RTI_EXCEPT(AttributeNotOwned) RTI_EXCEPT(AttributeNotPublished) RTI_EXCEPT(AttributeNotSubscribed) RTI_EXCEPT(ConcurrentAccessAttempted) RTI_EXCEPT(CouldNotDiscover) RTI_EXCEPT(CouldNotOpenFED) RTI_EXCEPT(CouldNotRestore) RTI_EXCEPT(DeletePrivilegeNotHeld) RTI_EXCEPT(ErrorReadingFED) RTI_EXCEPT(EventNotKnown) RTI_EXCEPT(FederateAlreadyPaused) RTI_EXCEPT(FederateAlreadyExecutionMember) RTI_EXCEPT(FederateDoesNotExist) RTI_EXCEPT(FederateInternalError) RTI_EXCEPT(FederateLoggingServiceCalls) RTI_EXCEPT(FederateNameAlreadyInUse) RTI_EXCEPT(FederateNotExecutionMember) RTI_EXCEPT(FederateNotPaused) RTI_EXCEPT(FederateOwnsAttributes) RTI_EXCEPT(FederatesCurrentlyJoined) RTI_EXCEPT(FederationAlreadyPaused) RTI_EXCEPT(FederationExecutionAlreadyExists) RTI_EXCEPT(FederationExecutionDoesNotExist) RTI_EXCEPT(FederationNotPaused) RTI_EXCEPT(FederationTimeAlreadyPassed) RTI_EXCEPT(HandleValuePairMaximumExceeded) RTI_EXCEPT(IDsupplyExhausted) RTI_EXCEPT(InteractionClassNotDefined) RTI_EXCEPT(InteractionClassNotKnown) RTI_EXCEPT(InteractionClassNotPublished) RTI_EXCEPT(InteractionParameterNotDefined) RTI_EXCEPT(InteractionParameterNotKnown) RTI_EXCEPT(InvalidDivestitureCondition) RTI_EXCEPT(InvalidExtents) RTI_EXCEPT(InvalidFederationTime) RTI_EXCEPT(InvalidLookahead) RTI_EXCEPT(InvalidObjectID) RTI_EXCEPT(InvalidOrderType) RTI_EXCEPT(InvalidResignAction) RTI_EXCEPT(InvalidRetractionHandle) RTI_EXCEPT(InvalidTransportType) RTI_EXCEPT(MemoryExhausted) RTI_EXCEPT(NameNotFound) RTI_EXCEPT(NoPauseRequested) RTI_EXCEPT(NoResumeRequested) RTI_EXCEPT(ObjectClassNotDefined) RTI_EXCEPT(ObjectClassNotKnown) RTI_EXCEPT(ObjectClassNotPublished) RTI_EXCEPT(ObjectClassNotSubscribed) RTI_EXCEPT(ObjectNotKnown) RTI_EXCEPT(ObjectAlreadyRegistered) RTI_EXCEPT(RegionNotKnown) RTI_EXCEPT(RestoreInProgress) RTI_EXCEPT(RestoreNotRequested) RTI_EXCEPT(RTIcanNotRestore) RTI_EXCEPT(RTIinternalError) RTI_EXCEPT(SpaceNotDefined) RTI_EXCEPT(SaveInProgress) RTI_EXCEPT(SaveNotInitiated) RTI_EXCEPT(SpecifiedSaveLabelDoesNotExist) RTI_EXCEPT(TimeAdvanceAlreadyInProgress) RTI_EXCEPT(TimeAdvanceWasNotInProgress) RTI_EXCEPT(TooManyIDsRequested) RTI_EXCEPT(UnableToPerformSave) RTI_EXCEPT(UnimplementedService) RTI_EXCEPT(UnknownLabel) RTI_EXCEPT(ValueCountExceeded) RTI_EXCEPT(ValueLengthExceeded) enum OrderType { RECEIVE = 1, TIMESTAMP }; enum OwnershipDivestitureCondition { NEGOTIATED = 1, UNCONDITIONAL }; enum ObjectRemovalReason { OUT_OF_REGION = 1, OBJECT_DELETED, NO_LONGER_SUBSCRIBED }; enum TokenState { LOCKED = 1, UNLOCKED, DIVESTING, GONE }; enum TransportType { RELIABLE = 1, BEST_EFFORT }; enum ResignAction { RELEASE_ATTRIBUTES = 1, DELETE_OBJECTS, DELETE_OBJECTS_AND_RELEASE_ATTRIBUTES, NO_ACTION }; enum FederateStateType { RUNNING = 1, PAUSE_PENDING, PAUSED, RESUME_PENDING, SAVE_PENDING, SAVING, RESTORE_PENDING, RESTORING }; enum FederationStateType { FEDERATION_RUNNING = 1, FEDERATION_PAUSING, FEDERATION_PAUSED, FEDERATION_RESUMING }; enum TimeManagerStateType { INITIALIZE = 1, JOINING, IDLE, EVENT_PENDING, EVENT_AVAILABLE_PENDING, TIME_PENDING, TIME_AVAILABLE_PENDING, FLUSH_QUEUE_PENDING }; class FederateAmbassador; typedef FederateAmbassador *FederateAmbassadorPtr; typedef RTI::UShort ObjectClassHandle; typedef RTI::UShort InteractionClassHandle; typedef RTI::UShort Handle; typedef RTI::UShort AttributeHandle; typedef RTI::UShort ParameterHandle; typedef RTI::UShort FederateHandle; typedef RTI::ULong FederateID; typedef RTI::ULong ObjectID; typedef RTI::ULong UniqueID; class HandleValuePairSet { public: virtual ~HandleValuePairSet() { ; } virtual ULong // returned C3 size() const = 0; // Cardinality of the set. virtual Handle // returned C3 getHandle( // Get ith handle. ULong i) const // supplied C1 throw ( ArrayIndexOutOfBounds) = 0; virtual void getValue( // Get ith value. ULong i, // supplied C1 char *buff, // supplied C4 ULong &valueLength) const // returned C2 throw ( ArrayIndexOutOfBounds) = 0; virtual void add( // Add new value. Handle h, // supplied C1 const char *buff, // supplied C4 ULong valueLength) // supplied C1 throw ( ValueLengthExceeded, ValueCountExceeded) = 0; virtual void moveFrom( // Add new value. const HandleValuePairSet& ahvp, // supplied C1 ULong &i) // supplied C1 throw ( ValueCountExceeded, ArrayIndexOutOfBounds) = 0; virtual void empty() = 0; // Empty the Set without deallocating space. virtual inline RTI::ULong start() const = 0; virtual inline RTI::ULong valid(RTI::ULong i) const = 0; virtual inline RTI::ULong next(RTI::ULong i) const = 0; }; typedef HandleValuePairSet AttributeHandleValuePairSet; class AttributeSetFactory { public: static AttributeHandleValuePairSet // returned C6 *create( // Create set with space for // specified number of attributes. ULong count) // supplied C1 throw ( MemoryExhausted, ValueCountExceeded); }; class AttributeHandleSet { public: AttributeHandleSet(); ULong // returned C3 size() const = 0; // Cardinality of the set. AttributeHandle // returned C3 getHandle( // Get ith handle. ULong i) const // supplied C1 throw ( ArrayIndexOutOfBounds) = 0; void add( // Add new value. AttributeHandle h) // supplied C1 throw ( AttributeNotDefined) = 0; void empty() = 0; // Empty the Set without deallocating space. Boolean isEmpty(); Boolean isMember(AttributeHandle h); AttributeHandleSet setUnion(AttributeHandleSet &); AttributeHandleSet setIntersection(AttributeHandleSet &); AttributeHandleSet removeSetIntersection(AttributeHandleSet &); ULong encodedLength(); void encode(char *buff) const; static AttributeHandleSet *decode(const char *buff) throw(ValueCountExceeded); friend ostream& operator << (ostream&, AttributeHandleSet &); friend RWFile & operator << (RWFile &, AttributeHandleSet &); friend RWFile & operator >> (RWFile &, AttributeHandleSet &); private UShort _size; ULong _words[(MAX_ATTRIBUTES_PER_CLASS-1)/32+1]; }; class AttributeHandleSetFactory { public: static AttributeHandleSet // returned C6 *create( // Create set with space for specified // number of AttributeHandles. ULong count) // supplied C1 throw( MemoryExhausted, ValueCountExceeded); }; typedef RTI::UShort ObjectIDcount; typedef RTI::Double FederationTimeDelta; typedef RTI::Double FederationTime; typedef RTI::Double TickTime; class FederateHandleSet { public: virtual ULong // returned C3 size() const = 0; // Cardinality of the set. virtual FederateHandle // returned C3 getHandle( // Get ith handle. ULong i) const // supplied C1 throw ( ArrayIndexOutOfBounds) = 0; virtual void add( // Add new value. FederateHandle h) // supplied C1 throw ( ValueCountExceeded) = 0; virtual void empty() = 0; // Empty the set without deallocating space. }; class FederateHandleSetFactory { public: static FederateHandleSet // returned C6 *create( // Create set with space for specified // number of FederateHandles. ULong count) // supplied C1 throw ( MemoryExhausted, ValueCountExceeded); }; struct EventRetractionHandle_s { FederationTime theEventTime; UniqueID theSerialNumber; FederateHandle sendingFederate; }; typedef struct EventRetractionHandle_s EventRetractionHandle; // All char * declarations should use null terminated strings typedef char * FederationExecutionName; typedef char * FederateName; typedef char * FileName; typedef char * PauseLabel; typedef char * SaveLabel; typedef char * UserSuppliedTag; typedef char * ObjectClassName; typedef char * AttributeName; typedef char * InteractionClassName; typedef char * ParameterName; typedef HandleValuePairSet ParameterHandleValuePairSet; class ParameterSetFactory { public: static ParameterHandleValuePairSet // returned C6 *create( // Create set with space for // specified number of attributes. ULong count) // supplied C1 throw ( MemoryExhausted, ValueCountExceeded); }; struct range_struct_s { RTI::ULong first; RTI::ULong last; }; typedef struct range_struct_s Range; struct Extents_s { RTI::ULong _length; Range* _buffer; }; typedef struct Extents_s Extents; struct ExtentSet_s { RTI::ULong _length; Extents* _buffer; }; typedef struct ExtentSet_s ExtentSet; typedef RTI::ULong Region; struct Threshold_s { RTI::ULong value; }; typedef Threshold_s Threshold; struct ThresholdSet_s { RTI::ULong _length; Threshold* _buffer; }; typedef struct ThresholdSet_s ThresholdSet; typedef RTI::Long SpaceHandle; typedef char * SpaceName;

RTI Class Definition

//File RTI.hh struct RTIambPrivateRefs; struct RTIambPrivateData; class RTI { public: #include "baseTypes.hh" #include "RTItypes.hh" class RTIambassador { public: #include "RTIambServices.hh" RTIambPrivateData* privateData; private: RTIambPrivateRefs* privateRefs; }; class FederateAmbassador { public: #include "federateAmbServices.hh" }; };