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();
146 #elif defined(DtIFSPEC1516E)
180 virtual void processException(MAKRti::DtString
const & serviceName,
182 #elif defined(DtIFSPEC1516E)
183 virtual void processException(MAKRti::DtString
const & serviceName,
194 virtual void observe(
195 const char* functionName,
196 DtMomArgumentList
const & arguments,
197 DtServiceGroup serviceGroup,
198 DtMomArgumentList
const& returnArg,
201 #elif defined(DtIFSPEC1516E)
202 virtual void observe(
203 const char* functionName,
204 DtMomArgumentList
const & arguments,
205 DtServiceGroup serviceGroup,
206 DtMomArgumentList
const& returnArg,
210 virtual void observe(
211 const char* functionName,
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();
227 virtual void designateFederationPublisher();
230 virtual DtMomHandleList
const & federateList()
const;
234 virtual unsigned long objectRegisterCount()
const;
238 virtual unsigned long objectDeleteCount()
const;
242 virtual unsigned long objectRemoveCount()
const;
246 virtual unsigned long objectDiscoverCount()
const;
250 virtual void resetTimeTrack(
bool clearAccumulation);
254 virtual void switchToGrantedTime();
258 virtual void switchToAdvancingTime();
262 virtual unsigned long grantedTime()
const;
265 virtual unsigned long deltaGrantedTime(MAKRti::DtTime currentTime)
const;
268 virtual void resetGrantedTime();
272 virtual unsigned long advancingTime()
const;
275 virtual unsigned long deltaAdvancingTime(MAKRti::DtTime currentTime)
const;
278 virtual void resetAdvancingTime();
281 virtual void updateTimeConstrained();
284 virtual void updateTimeRegulating();
287 virtual void updateAsynchronousDelivery();
290 virtual void updateFederateState();
293 virtual void updateTimeState();
296 virtual void updateLastSave();
299 virtual void updateNextSave();
302 virtual void updateConveyRegion();
305 virtual void updateConveyProducingFederate();
308 virtual void updateAutoProvide();
311 virtual void updateFromRID();
314 virtual void sendAlive();
322 virtual void prepareToRestore();
331 DtServiceGroup serviceGroup)
const;
332 #elif defined(DtIFSPEC1516E)
335 DtServiceGroup serviceGroup)
const;
337 virtual DtHandle federateRegion()
const;
338 virtual DtHandle federateServiceRegion(DtServiceGroup serviceGroup)
const;
350 static void setCreatorFunction(DtMomMgrCreator fn);
353 virtual void processResign(
const DtResignMsg& msg);
358 virtual DtMomServices* serviceManager();
361 virtual DtMomInspector * inspector();
364 virtual DtMomFederatePublisher *federatePublisher();
367 virtual DtMomFederationPublisher *federationPublisher();
370 virtual DtMomInteractionFactory* factory();
374 virtual bool addPublishedInteraction(
char const* name);
380 #elif defined(DtIFSPEC1516E)
389 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
390 virtual void reportMomException(std::wstring
const & interactionName,
391 std::wstring
const & exceptionDescription,
bool invalidParamCount);
393 virtual void reportMomException(MAKRti::DtString
const & interactionName,
394 MAKRti::DtString
const & exceptionDescription,
bool invalidParamCount);
399 virtual void testInteraction(DtMomInteraction& interaction);
407 virtual void processAlive(
const DtAliveMsg& msg);
425 virtual void processLocDelete(
const DtLocDelMsg& msg);
435 virtual void processAssocSubReg(
const DtAssocSubRegMsg& msg);
440 virtual void alive (
DtHandle handle);
449 virtual void processRequestUpdatesSentInteraction(
450 const DtRequestUpdatesSentInteraction& interaction);
451 virtual void processRequestPublicationsInteraction(
452 const DtRequestPublicationsInteraction& interaction);
453 virtual void processRequestReflectionsReceivedInteraction(
454 const DtRequestReflectionsReceivedInteraction& interaction);
455 virtual void processRequestObjectsOwnedInteraction(
456 const DtRequestObjectsOwnedInteraction& interaction);
457 virtual void processRequestInteractionsSentInteraction(
458 const DtRequestInteractionsSentInteraction& interaction);
459 virtual void processRequestObjectsUpdatedInteraction(
460 const DtRequestObjectsUpdatedInteraction& interaction);
461 virtual void processRequestSubscriptionsInteraction(
462 const DtRequestSubscriptionsInteraction& interaction);
463 virtual void processRequestObjectInformationInteraction(
464 const DtRequestObjectInformationInteraction& interaction);
465 virtual void processRequestInteractionsReceivedInteraction(
466 const DtRequestInteractionsReceivedInteraction& interaction);
467 virtual void processRequestObjectsReflectedInteraction(
468 const DtRequestObjectsReflectedInteraction& interaction);
469 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
470 virtual void processRequestSyncPointStatusInteraction(
471 DtRequestSyncPointStatusInteraction
const & interaction);
472 virtual void processRequestSyncPointsInteraction(
473 DtRequestSyncPointsInteraction
const & interaction);
476 virtual void processRequestFomModuleDataInteraction(
477 DtRequestFomModuleDataInteraction
const & interaction);
478 virtual void processRequestFederationFomModuleDataInteraction(
479 DtRequestFederationFomModuleDataInteraction
const & interaction);
480 virtual void processRequestMimDataInteraction(
481 DtRequestMimDataInteraction
const & interaction);
487 virtual void processModifyAttributeStateInteraction(
488 const DtModifyAttributeStateInteraction& interaction);
489 virtual void processSetExceptionLoggingInteraction(
490 const DtSetExceptionLoggingInteraction& interaction);
491 virtual void processSetTimingInteraction(
492 const DtSetTimingInteraction& interaction);
493 virtual void processSetServiceReportingInteraction(
494 const DtSetServiceReportingInteraction& interaction);
495 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
496 virtual void processSetFederationSwitchesInteraction(
497 DtSetFederationSwitchesInteraction
const & interaction);
498 virtual void processSetFederateSwitchesInteraction(
499 DtSetFederateSwitchesInteraction
const & interaction);
512 static void processRequest(
const DtRequestMsg& msg,
void* usr);
515 static void processSub(
const DtSubObjMsg& msg,
void* usr);
518 static void processUnSub(
const DtUnsubObjMsg& msg,
void* usr);
521 static void processLocDelete(
const DtLocDelMsg& msg,
void* usr);
527 static void processSaveTime(
const DtSaveTimeMsg& msg,
void* usr);
536 static void processAlive(
const DtAliveMsg& msg,
void* usr);
540 static void processAssocSubReg(
const DtAssocSubRegMsg& msg,
void* usr);
551 static void processModifyAttributeStateInteraction(
552 const DtModifyAttributeStateInteraction& interaction,
void* usr);
553 static void processSetExceptionLoggingInteraction(
554 DtSetExceptionLoggingInteraction
const & interaction,
void* usr);
555 static void processSetTimingInteraction(
556 DtSetTimingInteraction
const & interaction,
void* usr);
557 static void processSetServiceReportingInteraction(
558 DtSetServiceReportingInteraction
const & interaction,
void* usr);
559 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
560 static void processSetFederationSwitchesInteraction(
561 DtSetFederationSwitchesInteraction
const & interaction,
void* usr);
562 static void processSetFederateSwitchesInteraction(
563 DtSetFederateSwitchesInteraction
const & interaction,
void* usr);
569 static void processRequestUpdatesSentInteraction(
570 DtRequestUpdatesSentInteraction
const & interaction,
void* usr);
571 static void processRequestPublicationsInteraction(
572 DtRequestPublicationsInteraction
const & interaction,
void* usr);
573 static void processRequestReflectionsReceivedInteraction(
574 DtRequestReflectionsReceivedInteraction
const & interaction,
void* usr);
575 static void processRequestObjectsOwnedInteraction(
576 DtRequestObjectsOwnedInteraction
const & interaction,
void* usr);
577 static void processRequestInteractionsSentInteraction(
578 const DtRequestInteractionsSentInteraction& interaction,
void* usr);
579 static void processRequestObjectsUpdatedInteraction(
580 DtRequestObjectsUpdatedInteraction
const & interaction,
void* usr);
581 static void processRequestSubscriptionsInteraction(
582 DtRequestSubscriptionsInteraction
const & interaction,
void* usr);
583 static void processRequestObjectInformationInteraction(
584 DtRequestObjectInformationInteraction
const & interaction,
void* usr);
585 static void processRequestInteractionsReceivedInteraction(
586 DtRequestInteractionsReceivedInteraction
const & interaction,
void* usr);
587 static void processRequestObjectsReflectedInteraction(
588 DtRequestObjectsReflectedInteraction
const & interaction,
void* usr);
589 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
590 static void processRequestSyncPointStatusInteraction(
591 DtRequestSyncPointStatusInteraction
const & interaction,
void* usr);
592 static void processRequestSyncPointsInteraction(
593 DtRequestSyncPointsInteraction
const & interaction,
void* usr);
596 static void processRequestFomModuleDataInteraction(
597 DtRequestFomModuleDataInteraction
const & interaction,
void* usr);
598 static void processRequestFederationFomModuleDataInteraction(
599 DtRequestFederationFomModuleDataInteraction
const & interaction,
void* usr);
600 static void processRequestMimDataInteraction(
601 DtRequestMimDataInteraction
const & interaction,
void* usr);
607 static void processChangeAttributeOrderTypeInteraction(
608 DtChangeAttributeOrderTypeInteraction
const & interaction,
void* usr);
609 static void processChangeAttributeTransportationTypeInteraction(
610 DtChangeAttributeTransportationTypeInteraction
const & interaction,
612 static void processChangeInteractionOrderTypeInteraction(
613 DtChangeInteractionOrderTypeInteraction
const & interaction,
void* usr);
614 static void processChangeInteractionTransportationTypeInteraction(
615 DtChangeInteractionTransportationTypeInteraction
const & interaction,
617 static void processDeleteObjectInstanceInteraction(
618 DtDeleteObjectInstanceInteraction
const & interaction,
void* usr);
619 static void processDisableAsynchronousDeliveryInteraction(
620 DtDisableAsynchronousDeliveryInteraction
const & interaction,
void* usr);
621 static void processDisableTimeConstrainedInteraction(
622 DtDisableTimeConstrainedInteraction
const & interaction,
void* usr);
623 static void processDisableTimeRegulationInteraction(
624 DtDisableTimeRegulationInteraction
const & interaction,
void* usr);
625 static void processEnableAsynchronousDeliveryInteraction(
626 DtEnableAsynchronousDeliveryInteraction
const & interaction,
void* usr);
627 static void processEnableTimeConstrainedInteraction(
628 DtEnableTimeConstrainedInteraction
const & interaction,
void* usr);
629 static void processEnableTimeRegulationInteraction(
630 DtEnableTimeRegulationInteraction
const & interaction,
void* usr);
631 static void processFederateRestoreCompleteInteraction(
632 DtFederateRestoreCompleteInteraction
const & interaction,
void* usr);
633 static void processFederateSaveBegunInteraction(
634 DtFederateSaveBegunInteraction
const & interaction,
void* usr);
635 static void processFederateSaveCompleteInteraction(
636 DtFederateSaveCompleteInteraction
const & interaction,
void* usr);
637 static void processFlushQueueRequestInteraction(
638 DtFlushQueueRequestInteraction
const & interaction,
void* usr);
639 static void processLocalDeleteObjectInstanceInteraction(
640 DtLocalDeleteObjectInstanceInteraction
const & interaction,
void* usr);
641 static void processModifyLookaheadInteraction(
642 DtModifyLookaheadInteraction
const & interaction,
void* usr);
643 static void processNextEventRequestInteraction(
644 DtNextEventRequestInteraction
const & interaction,
void* usr);
645 static void processNextEventRequestAvailableInteraction(
646 DtNextEventRequestAvailableInteraction
const & interaction,
void* usr);
647 static void processPublishInteractionClassInteraction(
648 DtPublishInteractionClassInteraction
const & interaction,
void* usr);
649 static void processPublishObjectClassInteraction(
650 DtPublishObjectClassInteraction
const & interaction,
void* usr);
651 static void processResignFederationExecutionInteraction(
652 DtResignFederationExecutionInteraction
const & interaction,
void* usr);
653 static void processSubscribeInteractionClassInteraction(
654 DtSubscribeInteractionClassInteraction
const & interaction,
void* usr);
655 static void processSubscribeObjectClassAttributesInteraction(
656 DtSubscribeObjectClassAttributesInteraction
const & interaction,
658 static void processSynchronizationPointAchievedInteraction(
659 DtSynchronizationPointAchievedInteraction
const & interaction,
661 static void processTimeAdvanceRequestInteraction(
662 DtTimeAdvanceRequestInteraction
const & interaction,
void* usr);
663 static void processTimeAdvanceRequestAvailableInteraction(
664 DtTimeAdvanceRequestAvailableInteraction
const & interaction,
void* usr);
665 static void processUnconditionalAttributeOwnershipDivestitureInteraction(
666 DtUnconditionalAttributeOwnershipDivestitureInteraction
const & interaction,
668 static void processUnpublishInteractionClassInteraction(
669 DtUnpublishInteractionClassInteraction
const & interaction,
void* usr);
670 static void processUnpublishObjectClassInteraction(
671 DtUnpublishObjectClassInteraction
const & interaction,
void* usr);
672 static void processUnsubscribeInteractionClassInteraction(
673 DtUnsubscribeInteractionClassInteraction
const & interaction,
void* usr);
674 static void processUnsubscribeObjectClassInteraction(
675 DtUnsubscribeObjectClassInteraction
const & interaction,
void* usr);
685 DtMomInspector* myInspector;
688 DtMomServices* myServiceManager;
691 DtMomInteractionFactory* myFactory;
694 DtMomInterCbMgr* myCallbackMgr;
697 std::set<DtInteractionClassHandle> myPublishedInteractions;
700 DtMomFederatePublisher* myFederatePublisher;
703 DtMomFederationPublisher* myFederationPublisher;
706 DtMomHandleList myFederateList;
709 bool myServiceReporting;
712 bool myExceptionLogging;
715 unsigned long myAlertCount;
718 unsigned long myReportServiceID;
724 bool myMomInvocation;
727 DtMomObserver* myMomObserver;
730 DtMomWrapper* myMomWrapper;
769 std::auto_ptr < rti1516::LogicalTime > myTime;
770 std::auto_ptr < rti1516::LogicalTimeInterval > myInterval;
771 std::auto_ptr < rti1516::LogicalTime > myNullTime;
772 std::auto_ptr < rti1516::LogicalTimeInterval > myNullInterval;
774 #elif defined(DtIFSPEC1516E)
786 std::auto_ptr < rti1516e::LogicalTime > myTime;
787 std::auto_ptr < rti1516e::LogicalTimeInterval > myInterval;
788 std::auto_ptr < rti1516e::LogicalTime > myNullTime;
789 std::auto_ptr < rti1516e::LogicalTimeInterval > myNullInterval;
800 DtHandle myFederateServiceRegion[DtServiceGroupMax];
804 std::auto_ptr < RTI::FedTime > myTime;
805 std::auto_ptr < RTI::FedTime > myInterval;
806 std::auto_ptr < RTI::FedTime > myNullTime;
807 std::auto_ptr < RTI::FedTime > myNullInterval;
812 MAKRti::DtTime myBeginAdvancingTime;
815 MAKRti::DtTime myBeginGrantedTime;
818 unsigned long myGrantedTime;
821 unsigned long myAdvancingTime;
824 MAKRti::DtClock myClock;
826 std::set<DtFederateHandle> pendingFederateJoin;
831 static DtMomMgrCreator theCreator;