20 #include <vlutil/vlList.h>
28 #include <RTI/RTI1516.h>
30 #elif defined(DtIFSPEC1516E)
31 #include <RTI/RTI1516.h>
46 DtServiceGroupFederation,
47 DtServiceGroupDeclaration,
49 DtServiceGroupOwnership,
51 DtServiceGroupDistribution,
52 DtServiceGroupSupport,
53 DtServiceGroupInvalid,
54 DtServiceGroupMax=DtServiceGroupInvalid
71 class DtAssocSubRegMsg;
88 typedef DtMomMgr* (*DtMomMgrCreator)(
DtFederateMgr* fedMgrPtr);
103 DtMomMgr(DtMomMgr
const& );
106 DtMomMgr& operator= (DtMomMgr
const& );
111 virtual void postJoinInit();
116 virtual void postJoinConfirmInit();
119 virtual bool isPostJoined()
const;
122 virtual void resign();
125 virtual void preTick();
128 virtual void postTick();
144 virtual rti1516::RTIambassador* rtiAmb();
145 virtual rti1516::RTIambassador* rtiAmb()
const;
146 #elif defined(DtIFSPEC1516E)
150 virtual RTI::RTIambassador* rtiAmb();
151 virtual RTI::RTIambassador* rtiAmb()
const;
180 virtual void processException(MAKRti::DtString
const & serviceName,
181 const rti1516::Exception& exception);
182 #elif defined(DtIFSPEC1516E)
183 virtual void processException(MAKRti::DtString
const & serviceName,
184 const rti1516e::Exception& exception);
186 virtual void processException(
const RTI::Exception& exception);
194 virtual void observe(
195 const char* functionName,
196 DtMomArgumentList
const & arguments,
197 DtServiceGroup serviceGroup,
198 DtMomArgumentList
const& returnArg,
199 rti1516::Exception* except =
NULL );
201 #elif defined(DtIFSPEC1516E)
202 virtual void observe(
203 const char* functionName,
204 DtMomArgumentList
const & arguments,
205 DtServiceGroup serviceGroup,
206 DtMomArgumentList
const& returnArg,
207 rti1516e::Exception* except =
NULL );
210 virtual void observe(
211 const char* functionName,
212 RTI::Exception* except,
213 DtMomArgument
const & argument1,
214 DtMomArgument
const & argument2,
215 DtMomArgument
const & argument3,
216 DtMomArgument
const & argument4,
217 DtMomArgument
const & argument5,
218 DtMomArgument
const & returnArgument,
219 enum DtMomInitiatorOptions option);
223 virtual bool needObserve();
226 virtual int verboseLevel()
const;
227 virtual void setVerboseLevel(
int level);
232 virtual void designateFederationPublisher();
235 virtual DtMomHandleList
const & federateList()
const;
239 virtual unsigned long objectRegisterCount()
const;
243 virtual unsigned long objectDeleteCount()
const;
247 virtual unsigned long objectRemoveCount()
const;
251 virtual unsigned long objectDiscoverCount()
const;
255 virtual void resetTimeTrack(
bool clearAccumulation);
259 virtual void switchToGrantedTime();
263 virtual void switchToAdvancingTime();
267 virtual unsigned long grantedTime()
const;
270 virtual unsigned long deltaGrantedTime(MAKRti::DtTime currentTime)
const;
273 virtual void resetGrantedTime();
277 virtual unsigned long advancingTime()
const;
280 virtual unsigned long deltaAdvancingTime(MAKRti::DtTime currentTime)
const;
283 virtual void resetAdvancingTime();
286 virtual void updateTimeConstrained();
289 virtual void updateTimeRegulating();
292 virtual void updateAsynchronousDelivery();
295 virtual void updateFederateState();
298 virtual void updateTimeState();
301 virtual void updateLastSave();
304 virtual void updateNextSave();
307 virtual void updateConveyRegion();
310 virtual void updateConveyProducingFederate();
313 virtual void updateAutoProvide();
316 virtual void updateFromRID();
319 virtual void sendAlive();
327 virtual void prepareToRestore();
334 virtual rti1516::RegionHandleSet
const& federateRegion()
const;
335 virtual rti1516::RegionHandleSet
const& federateServiceRegion(
336 DtServiceGroup serviceGroup)
const;
337 #elif defined(DtIFSPEC1516E)
338 virtual rti1516e::RegionHandleSet
const& federateRegion()
const;
339 virtual rti1516e::RegionHandleSet
const& federateServiceRegion(
340 DtServiceGroup serviceGroup)
const;
342 virtual DtHandle federateRegion()
const;
343 virtual DtHandle federateServiceRegion(DtServiceGroup serviceGroup)
const;
355 static void setCreatorFunction(DtMomMgrCreator fn);
358 virtual void processResign(
const DtResignMsg& msg);
363 virtual DtMomServices* serviceManager();
366 virtual DtMomInspector * inspector();
369 virtual DtMomFederatePublisher *federatePublisher();
372 virtual DtMomFederationPublisher *federationPublisher();
375 virtual DtMomInteractionFactory* factory();
379 virtual bool addPublishedInteraction(
char const* name);
384 rti1516::RegionHandleSet
const& regionSet);
385 #elif defined(DtIFSPEC1516E)
387 rti1516e::RegionHandleSet
const& regionSet);
394 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
395 virtual void reportMomException(std::wstring
const & interactionName,
396 std::wstring
const & exceptionDescription,
bool invalidParamCount);
398 virtual void reportMomException(MAKRti::DtString
const & interactionName,
399 MAKRti::DtString
const & exceptionDescription,
bool invalidParamCount);
404 virtual void testInteraction(DtMomInteraction& interaction);
412 virtual void processAlive(
const DtAliveMsg& msg);
430 virtual void processLocDelete(
const DtLocDelMsg& msg);
439 virtual void processAssocSubReg(
const DtAssocSubRegMsg& msg);
445 virtual void alive (
DtHandle handle);
453 virtual void processRequestUpdatesSentInteraction(
455 const DtRequestUpdatesSentInteraction& interaction);
456 virtual void processRequestPublicationsInteraction(
457 const DtRequestPublicationsInteraction& interaction);
458 virtual void processRequestReflectionsReceivedInteraction(
459 const DtRequestReflectionsReceivedInteraction& interaction);
460 virtual void processRequestObjectsOwnedInteraction(
461 const DtRequestObjectsOwnedInteraction& interaction);
462 virtual void processRequestInteractionsSentInteraction(
463 const DtRequestInteractionsSentInteraction& interaction);
464 virtual void processRequestObjectsUpdatedInteraction(
465 const DtRequestObjectsUpdatedInteraction& interaction);
466 virtual void processRequestSubscriptionsInteraction(
467 const DtRequestSubscriptionsInteraction& interaction);
468 virtual void processRequestObjectInformationInteraction(
469 const DtRequestObjectInformationInteraction& interaction);
470 virtual void processRequestInteractionsReceivedInteraction(
471 const DtRequestInteractionsReceivedInteraction& interaction);
472 virtual void processRequestObjectsReflectedInteraction(
473 const DtRequestObjectsReflectedInteraction& interaction);
474 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
475 virtual void processRequestSyncPointStatusInteraction(
476 DtRequestSyncPointStatusInteraction
const & interaction);
477 virtual void processRequestSyncPointsInteraction(
478 DtRequestSyncPointsInteraction
const & interaction);
481 virtual void processRequestFomModuleDataInteraction(
482 DtRequestFomModuleDataInteraction
const & interaction);
483 virtual void processRequestFederationFomModuleDataInteraction(
484 DtRequestFederationFomModuleDataInteraction
const & interaction);
485 virtual void processRequestMimDataInteraction(
486 DtRequestMimDataInteraction
const & interaction);
491 virtual void processModifyAttributeStateInteraction(
493 const DtModifyAttributeStateInteraction& interaction);
494 virtual void processSetExceptionLoggingInteraction(
495 const DtSetExceptionLoggingInteraction& interaction);
496 virtual void processSetTimingInteraction(
497 const DtSetTimingInteraction& interaction);
498 virtual void processSetServiceReportingInteraction(
499 const DtSetServiceReportingInteraction& interaction);
500 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
501 virtual void processSetFederationSwitchesInteraction(
502 DtSetFederationSwitchesInteraction
const & interaction);
503 virtual void processSetFederateSwitchesInteraction(
504 DtSetFederateSwitchesInteraction
const & interaction);
517 static void processRequest(
const DtRequestMsg& msg,
void* usr);
520 static void processSub(
const DtSubObjMsg& msg,
void* usr);
523 static void processUnSub(
const DtUnsubObjMsg& msg,
void* usr);
526 static void processLocDelete(
const DtLocDelMsg& msg,
void* usr);
532 static void processSaveTime(
const DtSaveTimeMsg& msg,
void* usr);
541 static void processAlive(
const DtAliveMsg& msg,
void* usr);
544 static void processAssocSubReg(
const DtAssocSubRegMsg& msg,
void* usr);
555 static void processModifyAttributeStateInteraction(
557 const DtModifyAttributeStateInteraction& interaction,
void* usr);
558 static void processSetExceptionLoggingInteraction(
559 DtSetExceptionLoggingInteraction
const & interaction,
void* usr);
560 static void processSetTimingInteraction(
561 DtSetTimingInteraction
const & interaction,
void* usr);
562 static void processSetServiceReportingInteraction(
563 DtSetServiceReportingInteraction
const & interaction,
void* usr);
564 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
565 static void processSetFederationSwitchesInteraction(
566 DtSetFederationSwitchesInteraction
const & interaction,
void* usr);
567 static void processSetFederateSwitchesInteraction(
568 DtSetFederateSwitchesInteraction
const & interaction,
void* usr);
573 static void processRequestUpdatesSentInteraction(
575 DtRequestUpdatesSentInteraction
const & interaction,
void* usr);
576 static void processRequestPublicationsInteraction(
577 DtRequestPublicationsInteraction
const & interaction,
void* usr);
578 static void processRequestReflectionsReceivedInteraction(
579 DtRequestReflectionsReceivedInteraction
const & interaction,
void* usr);
580 static void processRequestObjectsOwnedInteraction(
581 DtRequestObjectsOwnedInteraction
const & interaction,
void* usr);
582 static void processRequestInteractionsSentInteraction(
583 const DtRequestInteractionsSentInteraction& interaction,
void* usr);
584 static void processRequestObjectsUpdatedInteraction(
585 DtRequestObjectsUpdatedInteraction
const & interaction,
void* usr);
586 static void processRequestSubscriptionsInteraction(
587 DtRequestSubscriptionsInteraction
const & interaction,
void* usr);
588 static void processRequestObjectInformationInteraction(
589 DtRequestObjectInformationInteraction
const & interaction,
void* usr);
590 static void processRequestInteractionsReceivedInteraction(
591 DtRequestInteractionsReceivedInteraction
const & interaction,
void* usr);
592 static void processRequestObjectsReflectedInteraction(
593 DtRequestObjectsReflectedInteraction
const & interaction,
void* usr);
594 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
595 static void processRequestSyncPointStatusInteraction(
596 DtRequestSyncPointStatusInteraction
const & interaction,
void* usr);
597 static void processRequestSyncPointsInteraction(
598 DtRequestSyncPointsInteraction
const & interaction,
void* usr);
601 static void processRequestFomModuleDataInteraction(
602 DtRequestFomModuleDataInteraction
const & interaction,
void* usr);
603 static void processRequestFederationFomModuleDataInteraction(
604 DtRequestFederationFomModuleDataInteraction
const & interaction,
void* usr);
605 static void processRequestMimDataInteraction(
606 DtRequestMimDataInteraction
const & interaction,
void* usr);
611 static void processChangeAttributeOrderTypeInteraction(
613 DtChangeAttributeOrderTypeInteraction
const & interaction,
void* usr);
614 static void processChangeAttributeTransportationTypeInteraction(
615 DtChangeAttributeTransportationTypeInteraction
const & interaction,
617 static void processChangeInteractionOrderTypeInteraction(
618 DtChangeInteractionOrderTypeInteraction
const & interaction,
void* usr);
619 static void processChangeInteractionTransportationTypeInteraction(
620 DtChangeInteractionTransportationTypeInteraction
const & interaction,
622 static void processDeleteObjectInstanceInteraction(
623 DtDeleteObjectInstanceInteraction
const & interaction,
void* usr);
624 static void processDisableAsynchronousDeliveryInteraction(
625 DtDisableAsynchronousDeliveryInteraction
const & interaction,
void* usr);
626 static void processDisableTimeConstrainedInteraction(
627 DtDisableTimeConstrainedInteraction
const & interaction,
void* usr);
628 static void processDisableTimeRegulationInteraction(
629 DtDisableTimeRegulationInteraction
const & interaction,
void* usr);
630 static void processEnableAsynchronousDeliveryInteraction(
631 DtEnableAsynchronousDeliveryInteraction
const & interaction,
void* usr);
632 static void processEnableTimeConstrainedInteraction(
633 DtEnableTimeConstrainedInteraction
const & interaction,
void* usr);
634 static void processEnableTimeRegulationInteraction(
635 DtEnableTimeRegulationInteraction
const & interaction,
void* usr);
636 static void processFederateRestoreCompleteInteraction(
637 DtFederateRestoreCompleteInteraction
const & interaction,
void* usr);
638 static void processFederateSaveBegunInteraction(
639 DtFederateSaveBegunInteraction
const & interaction,
void* usr);
640 static void processFederateSaveCompleteInteraction(
641 DtFederateSaveCompleteInteraction
const & interaction,
void* usr);
642 static void processFlushQueueRequestInteraction(
643 DtFlushQueueRequestInteraction
const & interaction,
void* usr);
644 static void processLocalDeleteObjectInstanceInteraction(
645 DtLocalDeleteObjectInstanceInteraction
const & interaction,
void* usr);
646 static void processModifyLookaheadInteraction(
647 DtModifyLookaheadInteraction
const & interaction,
void* usr);
648 static void processNextEventRequestInteraction(
649 DtNextEventRequestInteraction
const & interaction,
void* usr);
650 static void processNextEventRequestAvailableInteraction(
651 DtNextEventRequestAvailableInteraction
const & interaction,
void* usr);
652 static void processPublishInteractionClassInteraction(
653 DtPublishInteractionClassInteraction
const & interaction,
void* usr);
654 static void processPublishObjectClassInteraction(
655 DtPublishObjectClassInteraction
const & interaction,
void* usr);
656 static void processResignFederationExecutionInteraction(
657 DtResignFederationExecutionInteraction
const & interaction,
void* usr);
658 static void processSubscribeInteractionClassInteraction(
659 DtSubscribeInteractionClassInteraction
const & interaction,
void* usr);
660 static void processSubscribeObjectClassAttributesInteraction(
661 DtSubscribeObjectClassAttributesInteraction
const & interaction,
663 static void processSynchronizationPointAchievedInteraction(
664 DtSynchronizationPointAchievedInteraction
const & interaction,
666 static void processTimeAdvanceRequestInteraction(
667 DtTimeAdvanceRequestInteraction
const & interaction,
void* usr);
668 static void processTimeAdvanceRequestAvailableInteraction(
669 DtTimeAdvanceRequestAvailableInteraction
const & interaction,
void* usr);
670 static void processUnconditionalAttributeOwnershipDivestitureInteraction(
671 DtUnconditionalAttributeOwnershipDivestitureInteraction
const & interaction,
673 static void processUnpublishInteractionClassInteraction(
674 DtUnpublishInteractionClassInteraction
const & interaction,
void* usr);
675 static void processUnpublishObjectClassInteraction(
676 DtUnpublishObjectClassInteraction
const & interaction,
void* usr);
677 static void processUnsubscribeInteractionClassInteraction(
678 DtUnsubscribeInteractionClassInteraction
const & interaction,
void* usr);
679 static void processUnsubscribeObjectClassInteraction(
680 DtUnsubscribeObjectClassInteraction
const & interaction,
void* usr);
690 DtMomInspector* myInspector;
693 DtMomServices* myServiceManager;
696 DtMomInteractionFactory* myFactory;
699 DtMomInterCbMgr* myCallbackMgr;
702 std::set<DtInteractionClassHandle> myPublishedInteractions;
705 DtMomFederatePublisher* myFederatePublisher;
708 DtMomFederationPublisher* myFederationPublisher;
711 DtMomHandleList myFederateList;
714 bool myServiceReporting;
717 bool myExceptionLogging;
720 unsigned long myAlertCount;
723 unsigned long myReportServiceID;
729 bool myMomInvocation;
732 DtMomObserver* myMomObserver;
735 DtMomWrapper* myMomWrapper;
770 rti1516::RegionHandleSet myFederateRegion;
773 rti1516::RegionHandleSet myFederateServiceRegion[DtServiceGroupMax];
776 std::auto_ptr < rti1516::LogicalTime > myTime;
778 std::auto_ptr < rti1516::LogicalTimeInterval > myInterval;
779 std::auto_ptr < rti1516::LogicalTime > myNullTime;
780 std::auto_ptr < rti1516::LogicalTimeInterval > myNullInterval;
782 #elif defined(DtIFSPEC1516E)
787 rti1516e::RegionHandleSet myFederateRegion;
790 rti1516e::RegionHandleSet myFederateServiceRegion[DtServiceGroupMax];
793 std::auto_ptr < rti1516e::LogicalTime > myTime;
795 std::auto_ptr < rti1516e::LogicalTimeInterval > myInterval;
796 std::auto_ptr < rti1516e::LogicalTime > myNullTime;
797 std::auto_ptr < rti1516e::LogicalTimeInterval > myNullInterval;
808 DtHandle myFederateServiceRegion[DtServiceGroupMax];
811 std::auto_ptr < RTI::FedTime > myTime;
813 std::auto_ptr < RTI::FedTime > myInterval;
814 std::auto_ptr < RTI::FedTime > myNullTime;
815 std::auto_ptr < RTI::FedTime > myNullInterval;
820 MAKRti::DtTime myBeginAdvancingTime;
823 MAKRti::DtTime myBeginGrantedTime;
826 unsigned long myGrantedTime;
829 unsigned long myAdvancingTime;
832 MAKRti::DtClock myClock;
834 std::set<DtFederateHandle> pendingFederateJoin;
839 static DtMomMgrCreator theCreator;
Definition: aliveMsg.h:24
virtual EventRetractionHandle sendInteraction(InteractionClassHandle theInteraction, const ParameterHandleValuePairSet &theParameters, const FedTime &theTime, const char *theTag)
Definition: joinRespMsg.h:27
Definition: joinConfMsg.h:24
Definition: ambObsList.h:20
ResignAction
Definition: RTItypes13.h:89
This class manages the RTI's start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
Definition: saveTimeMsg.h:21
A class provided by the HLA C++ Interface Specification which federates use to communicate with the R...
Definition: resignMsg.h:36
DtHandle DtInteractionClassHandle
Definition: internalTypes.h:35
Instances of DtFederateMgr process federation-level messages (such as create, destroy, join, resign, and sync points) and manages the objects responsible for handling general communication, objects, interactions, the FOM, MOM, and data distribution mmg.
Definition: fedMgr.h:88
#define NULL
Definition: baseTypes13.h:8
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:60
Instances of DtInteractionMgr manage the sending and receiving of interactions.
Definition: interMgr.h:45
Definition: subObjMsg.h:23
The object manager class processes the object management services.
Definition: objMgr.h:90
Definition: intClassInfo.h:41
unsigned long DtHandle
The internal types.
Definition: internalTypes.h:25
#define DT_DLL_LRC
Definition: rtiMsConfig.h:126
Definition: saveFile.h:21
The declaration of internal types.
Definition: unsubObjMsg.h:24
Definition: locDelMsg.h:28
Definition: reqObjMsg.h:31
DtInteractionMsg is a message type that represents an HLA Interaction.
Definition: interactMsg.h:27