RTIA Class Reference

#include <RTIA.hh>

List of all members.

Public Member Functions

 RTIA (int RTIA_port)
 RTIA constructor.
 ~RTIA ()
void execute ()
 RTIA mainloop.
void displayStatistics ()

Private Member Functions

void saveAndRestoreStatus (Message::Type type) throw (SaveInProgress, RestoreInProgress)
 Verify that federate is not in saving or restoring state.
void processNetworkMessage (NetworkMessage *)
 RTIA processes a message coming from network.
void processFederateRequest (Message *)
 RTIA processes a service request coming from federate.
void chooseFederateProcessing (Message *, Message &, TypeException &)
 Choose federate processing.
void processOngoingTick ()
 RTIA processes the TICK_REQUEST.

Private Attributes

RootObjectrootObject
FederationManagementfm
TimeManagementtm
Communicationscomm
Queuesqueues
ObjectManagementom
OwnershipManagementowm
DeclarationManagementdm
DataDistributionddm
Statistics stat


Detailed Description

Definition at line 40 of file RTIA.hh.


Constructor & Destructor Documentation

RTIA ( int  RTIA_port  ) 

~RTIA (  ) 


Member Function Documentation

void execute (  ) 

RTIA mainloop.

Messages allocated for reading data exchange between RTIA and federate/RTIG are freed by 'processFederateRequest' or 'processNetworkMessage'.

Definition at line 116 of file RTIA.cc.

References FederationManagement::_fin_execution, TimeManagement::_tick_state, TimeManagement::_tick_timeout, RTIA::comm, RTIA::fm, TimeManagement::NO_TICK, RTIA::processFederateRequest(), RTIA::processNetworkMessage(), RTIA::processOngoingTick(), Communications::readMessage(), TimeManagement::TICK_BLOCKING, TimeManagement::TICK_CALLBACK, TimeManagement::TICK_RETURN, and RTIA::tm.

Referenced by main().

Here is the call graph for this function:

void displayStatistics (  ) 

Definition at line 103 of file RTIA.cc.

References Statistics::display(), and RTIA::stat.

Referenced by main().

Here is the call graph for this function:

void saveAndRestoreStatus ( Message::Type  type  )  throw (SaveInProgress, RestoreInProgress) [private]

void processNetworkMessage ( NetworkMessage msg  )  [private]

RTIA processes a message coming from network.

Definition at line 43 of file RTIA_network.cc.

References NetworkMessage::ANNOUNCE_SYNCHRONIZATION_POINT, NetworkMessage::ATTRIBUTE_IS_NOT_OWNED, NetworkMessage::ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION, NetworkMessage::ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION, NetworkMessage::ATTRIBUTE_OWNERSHIP_UNAVAILABLE, NetworkMessage::CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION, certi::rtia::D, NetworkMessage::DISCOVER_OBJECT, NetworkMessage::federate, NetworkMessage::FEDERATION_NOT_RESTORED, NetworkMessage::FEDERATION_NOT_SAVED, NetworkMessage::FEDERATION_RESTORE_BEGUN, NetworkMessage::FEDERATION_RESTORED, NetworkMessage::FEDERATION_SAVED, NetworkMessage::FEDERATION_SYNCHRONIZED, certi::rtia::G, NetworkMessage::getDate(), TreeNamedAndHandledSet::getObjectFromHandle(), FedTime::getTime(), NetworkMessage::getType(), NetworkMessage::handleArray, NetworkMessage::handleArraySize, NetworkMessage::INFORM_ATTRIBUTE_OWNERSHIP, NetworkMessage::INITIATE_FEDERATE_RESTORE, NetworkMessage::INITIATE_FEDERATE_SAVE, LBTS::insert(), Queues::insertBeginCommand(), Queues::insertFifoMessage(), Queues::insertLastCommand(), Queues::insertTsoMessage(), NetworkMessage::interactionClass, RootObject::Interactions, NetworkMessage::isDated(), NetworkMessage::MESSAGE_NULL, NetworkMessage::objectClass, RootObject::ObjectClasses, PrettyDebug::Out(), pdGendoc, pdTrace, NetworkMessage::PROVIDE_ATTRIBUTE_VALUE_UPDATE, RTIA::queues, certi::RECEIVE, NetworkMessage::RECEIVE_INTERACTION, NetworkMessage::REFLECT_ATTRIBUTE_VALUES, LBTS::remove(), NetworkMessage::REMOVE_OBJECT, NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION, NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE, NetworkMessage::REQUEST_FEDERATION_RESTORE_FAILED, NetworkMessage::REQUEST_FEDERATION_RESTORE_SUCCEEDED, TimeManagement::requestContraintState(), RTIA::rootObject, Statistics::rtiService(), NetworkMessage::SET_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH, NetworkMessage::SET_ATTRIBUTE_SCOPE_ADVISORY_SWITCH, NetworkMessage::SET_CLASS_RELEVANCE_ADVISORY_SWITCH, NetworkMessage::SET_INTERACTION_RELEVANCE_ADVISORY_SWITCH, NetworkMessage::SET_TIME_REGULATING, NetworkMessage::START_REGISTRATION_FOR_OBJECT_CLASS, RTIA::stat, NetworkMessage::SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED, NetworkMessage::TIME_CONSTRAINED_ENABLED, NetworkMessage::TIME_REGULATION_ENABLED, certi::TIMESTAMP, RTIA::tm, and LBTS::update().

Referenced by RTIA::execute().

Here is the call graph for this function:

void processFederateRequest ( Message req  )  [private]

RTIA processes a service request coming from federate.

Definition at line 1164 of file RTIA_federate.cc.

References Exception::_name, RTIA::chooseFederateProcessing(), RTIA::comm, certi::rtia::D, certi::e_ArrayIndexOutOfBounds, certi::e_AttributeAcquisitionWasNotRequested, certi::e_AttributeAlreadyBeingAcquired, certi::e_AttributeAlreadyBeingDivested, certi::e_AttributeAlreadyOwned, certi::e_AttributeDivestitureWasNotRequested, certi::e_AttributeNotDefined, certi::e_AttributeNotKnown, certi::e_AttributeNotOwned, certi::e_AttributeNotPublished, certi::e_AttributeNotSubscribed, certi::e_ConcurrentAccessAttempted, certi::e_CouldNotDiscover, certi::e_CouldNotOpenFED, certi::e_CouldNotOpenRID, certi::e_CouldNotRestore, certi::e_DeletePrivilegeNotHeld, certi::e_ErrorReadingFED, certi::e_ErrorReadingRID, certi::e_EventNotKnown, certi::e_FederateAlreadyExecutionMember, certi::e_FederateAlreadyPaused, certi::e_FederateDoesNotExist, certi::e_FederateInternalError, certi::e_FederateNameAlreadyInUse, certi::e_FederateNotExecutionMember, certi::e_FederateNotPaused, certi::e_FederateNotPublishing, certi::e_FederateNotSubscribing, certi::e_FederateOwnsAttributes, certi::e_FederatesCurrentlyJoined, certi::e_FederateWasNotAskedToReleaseAttribute, certi::e_FederationAlreadyPaused, certi::e_FederationExecutionAlreadyExists, certi::e_FederationExecutionDoesNotExist, certi::e_FederationNotPaused, certi::e_FederationTimeAlreadyPassed, certi::e_IDsupplyExhausted, certi::e_InteractionClassNotDefined, certi::e_InteractionClassNotKnown, certi::e_InteractionClassNotPublished, certi::e_InteractionParameterNotDefined, certi::e_InteractionParameterNotKnown, certi::e_InvalidDivestitureCondition, certi::e_InvalidExtents, certi::e_InvalidFederationTime, certi::e_InvalidFederationTimeDelta, certi::e_InvalidObjectHandle, certi::e_InvalidOrderingHandle, certi::e_InvalidResignAction, certi::e_InvalidRetractionHandle, certi::e_InvalidRoutingSpace, certi::e_InvalidTransportationHandle, certi::e_MemoryExhausted, certi::e_NameNotFound, certi::e_NO_EXCEPTION, certi::e_NoPauseRequested, certi::e_NoResumeRequested, certi::e_ObjectAlreadyRegistered, certi::e_ObjectClassNotDefined, certi::e_ObjectClassNotKnown, certi::e_ObjectClassNotPublished, certi::e_ObjectClassNotSubscribed, certi::e_ObjectNotKnown, certi::e_RegionNotKnown, certi::e_RestoreInProgress, certi::e_RestoreNotRequested, certi::e_RTIinternalError, certi::e_SaveInProgress, certi::e_SaveNotInitiated, certi::e_SpaceNotDefined, certi::e_SpecifiedSaveLabelDoesNotExist, certi::e_TimeAdvanceAlreadyInProgress, certi::e_TimeAdvanceWasNotInProgress, certi::e_TooManyIDsRequested, certi::e_UnableToPerformSave, certi::e_UnimplementedService, certi::e_UnknownLabel, certi::e_ValueCountExceeded, certi::e_ValueLengthExceeded, certi::rtia::G, PrettyDebug::Out(), pdDebug, pdExcept, pdGendoc, Communications::sendUN(), Message::setException(), Message::TICK_REQUEST, Message::TICK_REQUEST_NEXT, Message::TICK_REQUEST_STOP, and Message::type.

Referenced by RTIA::execute().

Here is the call graph for this function:

void chooseFederateProcessing ( Message req,
Message rep,
TypeException e 
) [private]

Choose federate processing.

Set RTIA PrettyDebug federate name

Definition at line 116 of file RTIA_federate.cc.

References TimeManagement::_asynchronous_delivery, FederationManagement::_FEDid, FederationManagement::_fin_execution, Exception::_reason, TimeManagement::_tick_multiple, TimeManagement::_tick_result, TimeManagement::_tick_state, TimeManagement::_tick_stop_time, TimeManagement::_tick_timeout, DataDistribution::associateRegion(), Message::ATTRIBUTE_OWNERSHIP_ACQUISITION, Message::ATTRIBUTE_OWNERSHIP_ACQUISITION_IF_AVAILABLE, Message::ATTRIBUTE_OWNERSHIP_RELEASE_RESPONSE, OwnershipManagement::attributeOwnedByFederate(), OwnershipManagement::attributeOwnershipAcquisition(), OwnershipManagement::attributeOwnershipAcquisitionIfAvailable(), OwnershipManagement::attributeOwnershipRealeaseResponse(), certi::fedparser::build(), Message::CANCEL_ATTRIBUTE_OWNERSHIP_ACQUISITION, Message::CANCEL_NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE, OwnershipManagement::cancelattributeOwnershipAcquisition(), OwnershipManagement::cancelnegotiatedAttributeOwnershipDivestiture(), Message::CHANGE_ATTRIBUTE_ORDER_TYPE, Message::CHANGE_ATTRIBUTE_TRANSPORTATION_TYPE, Message::CHANGE_INTERACTION_ORDER_TYPE, Message::CHANGE_INTERACTION_TRANSPORTATION_TYPE, ObjectManagement::changeAttributeOrderType(), ObjectManagement::changeAttributeTransportType(), ObjectManagement::changeInteractionOrderType(), ObjectManagement::changeInteractionTransportType(), Message::CLOSE_CONNEXION, Message::CREATE_FEDERATION_EXECUTION, FederationManagement::createFederationExecution(), DataDistribution::createRegion(), certi::rtia::currentTickTime(), certi::rtia::D, RTIA::ddm, Message::DDM_ASSOCIATE_REGION, Message::DDM_CREATE_REGION, Message::DDM_DELETE_REGION, Message::DDM_MODIFY_REGION, Message::DDM_REGISTER_OBJECT, Message::DDM_SUBSCRIBE_ATTRIBUTES, Message::DDM_SUBSCRIBE_INTERACTION, Message::DDM_UNASSOCIATE_REGION, Message::DDM_UNSUBSCRIBE_ATTRIBUTES, Message::DDM_UNSUBSCRIBE_INTERACTION, Message::DELETE_OBJECT_INSTANCE, ObjectManagement::deleteObject(), DataDistribution::deleteRegion(), Message::DESTROY_FEDERATION_EXECUTION, FederationManagement::destroyFederationExecution(), Message::DISABLE_ASYNCHRONOUS_DELIVERY, Message::DISABLE_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH, Message::DISABLE_ATTRIBUTE_SCOPE_ADVISORY_SWITCH, Message::DISABLE_CLASS_RELEVANCE_ADVISORY_SWITCH, Message::DISABLE_INTERACTION_RELEVANCE_ADVISORY_SWITCH, Message::DISABLE_TIME_CONSTRAINED, Message::DISABLE_TIME_REGULATION, RTIA::dm, certi::e_AsynchronousDeliveryAlreadyDisabled, certi::e_AsynchronousDeliveryAlreadyEnabled, certi::e_NO_EXCEPTION, certi::e_ObjectClassNotDefined, certi::e_RTIinternalError, certi::e_UnimplementedService, Message::ENABLE_ASYNCHRONOUS_DELIVERY, Message::ENABLE_ATTRIBUTE_RELEVANCE_ADVISORY_SWITCH, Message::ENABLE_ATTRIBUTE_SCOPE_ADVISORY_SWITCH, Message::ENABLE_CLASS_RELEVANCE_ADVISORY_SWITCH, Message::ENABLE_INTERACTION_RELEVANCE_ADVISORY_SWITCH, Message::ENABLE_TIME_CONSTRAINED, Message::ENABLE_TIME_REGULATION, XmlParser::exists(), Message::FEDERATE_RESTORE_COMPLETE, Message::FEDERATE_RESTORE_NOT_COMPLETE, Message::FEDERATE_SAVE_BEGUN, Message::FEDERATE_SAVE_COMPLETE, Message::FEDERATE_SAVE_NOT_COMPLETE, FederationManagement::federateRestoreStatus(), FederationManagement::federateSaveBegun(), FederationManagement::federateSaveStatus(), Statistics::federateService(), Message::FLUSH_QUEUE_REQUEST, RTIA::fm, certi::rtia::G, Message::GET_ATTRIBUTE_HANDLE, Message::GET_ATTRIBUTE_NAME, Message::GET_ATTRIBUTE_SPACE_HANDLE, Message::GET_DIMENSION_HANDLE, Message::GET_DIMENSION_NAME, Message::GET_INTERACTION_CLASS_HANDLE, Message::GET_INTERACTION_CLASS_NAME, Message::GET_INTERACTION_SPACE_HANDLE, Message::GET_OBJECT_CLASS, Message::GET_OBJECT_CLASS_HANDLE, Message::GET_OBJECT_CLASS_NAME, Message::GET_OBJECT_INSTANCE_HANDLE, Message::GET_OBJECT_INSTANCE_NAME, Message::GET_ORDERING_HANDLE, Message::GET_ORDERING_NAME, Message::GET_PARAMETER_HANDLE, Message::GET_PARAMETER_NAME, Message::GET_SPACE_HANDLE, Message::GET_SPACE_NAME, Message::GET_TRANSPORTATION_HANDLE, Message::GET_TRANSPORTATION_NAME, Message::getAttribute(), ObjectManagement::getAttributeHandle(), ObjectManagement::getAttributeName(), DataDistribution::getAttributeSpace(), Message::getBoolean(), Message::getDimension(), DataDistribution::getDimensionHandle(), DataDistribution::getDimensionName(), BasicMessage::getExtents(), Message::getFederateName(), Message::getFederationName(), Message::getFederationTime(), Message::getFederationTimeDelta(), Message::getFEDid(), AttributeHandleSet::getHandle(), Message::getInteractionClass(), ObjectManagement::getInteractionClassHandle(), ObjectManagement::getInteractionClassName(), DataDistribution::getInteractionSpace(), Message::getLabel(), Message::getMaxTickTime(), Message::getMinTickTime(), Message::getName(), Message::getNumber(), Message::getObject(), ObjectManagement::getObjectClass(), Message::getObjectClass(), ObjectManagement::getObjectClassHandle(), ObjectManagement::getObjectClassName(), ObjectManagement::getObjectInstanceHandle(), ObjectManagement::getObjectInstanceName(), Message::getOrdering(), ObjectManagement::getOrderingHandle(), ObjectManagement::getOrderingName(), Message::getParameter(), ObjectManagement::getParameterHandle(), ObjectManagement::getParameterName(), Message::getRegion(), BasicMessage::getRegions(), Message::getResignAction(), RootObject::getRoutingSpace(), DataDistribution::getRoutingSpaceHandle(), DataDistribution::getRoutingSpaceName(), Message::getSpace(), Message::getTag(), Message::getTransportation(), ObjectManagement::getTransportationHandle(), ObjectManagement::getTransportationName(), Exception::getType(), Message::getValueArray(), Message::handleArray, Message::handleArraySize, Message::IS_ATTRIBUTE_OWNED_BY_FEDERATE, Message::JOIN_FEDERATION_EXECUTION, FederationManagement::joinFederationExecution(), Message::MODIFY_LOOKAHEAD, DataDistribution::modifyRegion(), Message::NEGOTIATED_ATTRIBUTE_OWNERSHIP_DIVESTITURE, OwnershipManagement::negotiatedAttributeOwnershipDivestiture(), Message::NEXT_EVENT_REQUEST, Message::NEXT_EVENT_REQUEST_AVAILABLE, TimeManagement::nextEventRequest(), TimeManagement::nextEventRequestAvailable(), TimeManagement::NO_TICK, RTIA::om, PrettyDebug::Out(), RTIA::owm, XmlParser::parse(), pdExcept, pdGendoc, pdTrace, RTIA::processOngoingTick(), Message::PUBLISH_INTERACTION_CLASS, Message::PUBLISH_OBJECT_CLASS, DeclarationManagement::publishInteractionClass(), DeclarationManagement::publishObjectClass(), Message::QUERY_ATTRIBUTE_OWNERSHIP, Message::QUERY_FEDERATE_TIME, Message::QUERY_LBTS, Message::QUERY_LOOKAHEAD, Message::QUERY_MIN_NEXT_EVENT_TIME, OwnershipManagement::queryAttributeOwnership(), Message::REGISTER_FEDERATION_SYNCHRONIZATION_POINT, Message::REGISTER_OBJECT_INSTANCE, DataDistribution::registerObject(), ObjectManagement::registerObject(), FederationManagement::registerSynchronization(), Message::REQUEST_CLASS_ATTRIBUTE_VALUE_UPDATE, Message::REQUEST_FEDERATION_RESTORE, Message::REQUEST_FEDERATION_SAVE, Message::REQUEST_OBJECT_ATTRIBUTE_VALUE_UPDATE, TimeManagement::requestFederateTime(), FederationManagement::requestFederationRestore(), FederationManagement::requestFederationSave(), TimeManagement::requestLBTS(), TimeManagement::requestLookahead(), TimeManagement::requestMinNextEventTime(), ObjectManagement::requestObjectAttributeValueUpdate(), Message::RESIGN_FEDERATION_EXECUTION, FederationManagement::resignFederationExecution(), Message::RETRACT, RTIA::rootObject, RTIA::saveAndRestoreStatus(), Message::SEND_INTERACTION, ObjectManagement::sendInteraction(), Message::setAttribute(), ObjectManagement::setAttributeRelevanceAdvisorySwitch(), ObjectManagement::setAttributeScopeAdvisorySwitch(), Message::setBoolean(), DeclarationManagement::setClassRelevanceAdvisorySwitch(), Message::setDimension(), Message::setEventRetraction(), Message::setException(), Message::setFederate(), PrettyDebug::setFederateName(), Message::setFederationName(), Message::setFederationTime(), Message::setFederationTimeDelta(), Message::setFEDid(), Message::setInteractionClass(), DeclarationManagement::setInteractionRelevanceAdvisorySwitch(), TimeManagement::setLookahead(), Message::setName(), Message::setNumber(), Message::setObject(), Message::setObjectClass(), Message::setOrdering(), Message::setParameter(), Message::setRegion(), Message::setSpace(), Message::setTag(), TimeManagement::setTimeConstrained(), TimeManagement::setTimeRegulating(), Message::setTransportation(), AttributeHandleSet::size(), RTIA::stat, DataDistribution::subscribe(), Message::SUBSCRIBE_INTERACTION_CLASS, Message::SUBSCRIBE_OBJECT_CLASS_ATTRIBUTES, DataDistribution::subscribeInteraction(), DeclarationManagement::subscribeInteractionClass(), DeclarationManagement::subscribeObjectClassAttribute(), Message::SYNCHRONIZATION_POINT_ACHIEVED, TimeManagement::TICK_BLOCKING, TimeManagement::TICK_CALLBACK, Message::TICK_REQUEST, Message::TICK_REQUEST_NEXT, Message::TICK_REQUEST_STOP, TimeManagement::TICK_RETURN, Message::TIME_ADVANCE_REQUEST, Message::TIME_ADVANCE_REQUEST_AVAILABLE, TimeManagement::timeAdvanceRequest(), TimeManagement::timeAdvanceRequestAvailable(), RTIA::tm, Message::type, DataDistribution::unassociateRegion(), Message::UNCONDITIONAL_ATTRIBUTE_OWNERSHIP_DIVESTITURE, OwnershipManagement::unconditionalAttributeOwnershipDivestiture(), Message::UNPUBLISH_INTERACTION_CLASS, Message::UNPUBLISH_OBJECT_CLASS, DeclarationManagement::unpublishInteractionClass(), DeclarationManagement::unpublishObjectClass(), FederationManagement::unregisterSynchronization(), Message::UNSUBSCRIBE_INTERACTION_CLASS, Message::UNSUBSCRIBE_OBJECT_CLASS, DataDistribution::unsubscribeAttributes(), DataDistribution::unsubscribeInteraction(), DeclarationManagement::unsubscribeInteractionClass(), DeclarationManagement::unsubscribeObjectClassAttribute(), Message::UPDATE_ATTRIBUTE_VALUES, and ObjectManagement::updateAttributeValues().

Referenced by RTIA::processFederateRequest().

void processOngoingTick (  )  [private]


Member Data Documentation

RootObject* rootObject [private]

Definition at line 52 of file RTIA.hh.

Referenced by RTIA::chooseFederateProcessing(), RTIA::execute(), RTIA::RTIA(), and RTIA::~RTIA().

TimeManagement* tm [private]

Communications* comm [private]

Queues* queues [private]

Definition at line 55 of file RTIA.hh.

Referenced by RTIA::processNetworkMessage(), RTIA::RTIA(), and RTIA::~RTIA().

ObjectManagement* om [private]

Definition at line 56 of file RTIA.hh.

Referenced by RTIA::chooseFederateProcessing(), RTIA::RTIA(), and RTIA::~RTIA().

Definition at line 57 of file RTIA.hh.

Referenced by RTIA::chooseFederateProcessing(), RTIA::RTIA(), and RTIA::~RTIA().

Definition at line 58 of file RTIA.hh.

Referenced by RTIA::chooseFederateProcessing(), RTIA::RTIA(), and RTIA::~RTIA().

DataDistribution* ddm [private]

Definition at line 59 of file RTIA.hh.

Referenced by RTIA::chooseFederateProcessing(), RTIA::RTIA(), and RTIA::~RTIA().

Statistics stat [private]


The documentation for this class was generated from the following files:

Generated on Thu Apr 30 16:00:06 2009 for CERTIDeveloperDocumentation by doxygen 1.5.5