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
70 class DtAssocSubRegMsg;
86 typedef DtMomMgr* (*DtMomMgrCreator)(
DtFederateMgr* fedMgrPtr);
101 DtMomMgr(DtMomMgr
const& );
104 DtMomMgr& operator= (DtMomMgr
const& );
109 virtual void postJoinInit();
112 virtual bool isPostJoined()
const;
115 virtual void resign();
118 virtual void preTick();
121 virtual void postTick();
139 #elif defined(DtIFSPEC1516E)
173 virtual void processException(MAKRti::DtString
const & serviceName,
175 #elif defined(DtIFSPEC1516E)
176 virtual void processException(MAKRti::DtString
const & serviceName,
187 virtual void observe(
188 const char* functionName,
189 DtMomArgumentList
const & arguments,
190 DtServiceGroup serviceGroup,
191 DtMomArgumentList
const& returnArg,
194 #elif defined(DtIFSPEC1516E)
195 virtual void observe(
196 const char* functionName,
197 DtMomArgumentList
const & arguments,
198 DtServiceGroup serviceGroup,
199 DtMomArgumentList
const& returnArg,
203 virtual void observe(
204 const char* functionName,
206 DtMomArgument
const & argument1,
207 DtMomArgument
const & argument2,
208 DtMomArgument
const & argument3,
209 DtMomArgument
const & argument4,
210 DtMomArgument
const & argument5,
211 DtMomArgument
const & returnArgument,
212 enum DtMomInitiatorOptions option);
216 virtual bool needObserve();
220 virtual void designateFederationPublisher();
223 virtual DtMomHandleList
const & federateList()
const;
227 virtual unsigned long objectRegisterCount()
const;
231 virtual unsigned long objectDeleteCount()
const;
235 virtual unsigned long objectRemoveCount()
const;
239 virtual unsigned long objectDiscoverCount()
const;
243 virtual void resetTimeTrack(
bool clearAccumulation);
247 virtual void switchToGrantedTime();
251 virtual void switchToAdvancingTime();
255 virtual unsigned long grantedTime()
const;
258 virtual unsigned long deltaGrantedTime(MAKRti::DtTime currentTime)
const;
261 virtual void resetGrantedTime();
265 virtual unsigned long advancingTime()
const;
268 virtual unsigned long deltaAdvancingTime(MAKRti::DtTime currentTime)
const;
271 virtual void resetAdvancingTime();
274 virtual void updateTimeConstrained();
277 virtual void updateTimeRegulating();
280 virtual void updateAsynchronousDelivery();
283 virtual void updateFederateState();
286 virtual void updateTimeState();
289 virtual void updateLastSave();
292 virtual void updateNextSave();
295 virtual void updateConveyRegion();
298 virtual void updateConveyProducingFederate();
301 virtual void updateAutoProvide();
304 virtual void updateFromRID();
307 virtual void sendAlive();
315 virtual void prepareToRestore();
324 DtServiceGroup serviceGroup)
const;
325 #elif defined(DtIFSPEC1516E)
328 DtServiceGroup serviceGroup)
const;
330 virtual DtHandle federateRegion()
const;
331 virtual DtHandle federateServiceRegion(DtServiceGroup serviceGroup)
const;
343 static void setCreatorFunction(DtMomMgrCreator fn);
346 virtual void processResign(
const DtResignMsg& msg);
351 virtual DtMomServices* serviceManager();
354 virtual DtMomInspector * inspector();
357 virtual DtMomFederatePublisher *federatePublisher();
360 virtual DtMomFederationPublisher *federationPublisher();
363 virtual DtMomInteractionFactory* factory();
367 virtual bool addPublishedInteraction(
char const* name);
373 #elif defined(DtIFSPEC1516E)
382 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
383 virtual void reportMomException(std::wstring
const & interactionName,
384 std::wstring
const & exceptionDescription,
bool invalidParamCount);
386 virtual void reportMomException(MAKRti::DtString
const & interactionName,
387 MAKRti::DtString
const & exceptionDescription,
bool invalidParamCount);
392 virtual void testInteraction(DtMomInteraction& interaction);
400 virtual void processAlive(
const DtAliveMsg& msg);
412 virtual void processLocDelete(
const DtLocDelMsg& msg);
422 virtual void processAssocSubReg(
const DtAssocSubRegMsg& msg);
427 virtual void alive (
DtHandle handle);
436 virtual void processRequestUpdatesSentInteraction(
437 const DtRequestUpdatesSentInteraction& interaction);
438 virtual void processRequestPublicationsInteraction(
439 const DtRequestPublicationsInteraction& interaction);
440 virtual void processRequestReflectionsReceivedInteraction(
441 const DtRequestReflectionsReceivedInteraction& interaction);
442 virtual void processRequestObjectsOwnedInteraction(
443 const DtRequestObjectsOwnedInteraction& interaction);
444 virtual void processRequestInteractionsSentInteraction(
445 const DtRequestInteractionsSentInteraction& interaction);
446 virtual void processRequestObjectsUpdatedInteraction(
447 const DtRequestObjectsUpdatedInteraction& interaction);
448 virtual void processRequestSubscriptionsInteraction(
449 const DtRequestSubscriptionsInteraction& interaction);
450 virtual void processRequestObjectInformationInteraction(
451 const DtRequestObjectInformationInteraction& interaction);
452 virtual void processRequestInteractionsReceivedInteraction(
453 const DtRequestInteractionsReceivedInteraction& interaction);
454 virtual void processRequestObjectsReflectedInteraction(
455 const DtRequestObjectsReflectedInteraction& interaction);
456 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
457 virtual void processRequestSyncPointStatusInteraction(
458 DtRequestSyncPointStatusInteraction
const & interaction);
459 virtual void processRequestSyncPointsInteraction(
460 DtRequestSyncPointsInteraction
const & interaction);
463 virtual void processRequestFomModuleDataInteraction(
464 DtRequestFomModuleDataInteraction
const & interaction);
465 virtual void processRequestFederationFomModuleDataInteraction(
466 DtRequestFederationFomModuleDataInteraction
const & interaction);
467 virtual void processRequestMimDataInteraction(
468 DtRequestMimDataInteraction
const & interaction);
474 virtual void processModifyAttributeStateInteraction(
475 const DtModifyAttributeStateInteraction& interaction);
476 virtual void processSetExceptionLoggingInteraction(
477 const DtSetExceptionLoggingInteraction& interaction);
478 virtual void processSetTimingInteraction(
479 const DtSetTimingInteraction& interaction);
480 virtual void processSetServiceReportingInteraction(
481 const DtSetServiceReportingInteraction& interaction);
482 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
483 virtual void processSetFederationSwitchesInteraction(
484 DtSetFederationSwitchesInteraction
const & interaction);
485 virtual void processSetFederateSwitchesInteraction(
486 DtSetFederateSwitchesInteraction
const & interaction);
499 static void processRequest(
const DtRequestMsg& msg,
void* usr);
502 static void processSub(
const DtSubObjMsg& msg,
void* usr);
505 static void processLocDelete(
const DtLocDelMsg& msg,
void* usr);
511 static void processSaveTime(
const DtSaveTimeMsg& msg,
void* usr);
517 static void processAlive(
const DtAliveMsg& msg,
void* usr);
521 static void processAssocSubReg(
const DtAssocSubRegMsg& msg,
void* usr);
532 static void processModifyAttributeStateInteraction(
533 const DtModifyAttributeStateInteraction& interaction,
void* usr);
534 static void processSetExceptionLoggingInteraction(
535 DtSetExceptionLoggingInteraction
const & interaction,
void* usr);
536 static void processSetTimingInteraction(
537 DtSetTimingInteraction
const & interaction,
void* usr);
538 static void processSetServiceReportingInteraction(
539 DtSetServiceReportingInteraction
const & interaction,
void* usr);
540 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
541 static void processSetFederationSwitchesInteraction(
542 DtSetFederationSwitchesInteraction
const & interaction,
void* usr);
543 static void processSetFederateSwitchesInteraction(
544 DtSetFederateSwitchesInteraction
const & interaction,
void* usr);
550 static void processRequestUpdatesSentInteraction(
551 DtRequestUpdatesSentInteraction
const & interaction,
void* usr);
552 static void processRequestPublicationsInteraction(
553 DtRequestPublicationsInteraction
const & interaction,
void* usr);
554 static void processRequestReflectionsReceivedInteraction(
555 DtRequestReflectionsReceivedInteraction
const & interaction,
void* usr);
556 static void processRequestObjectsOwnedInteraction(
557 DtRequestObjectsOwnedInteraction
const & interaction,
void* usr);
558 static void processRequestInteractionsSentInteraction(
559 const DtRequestInteractionsSentInteraction& interaction,
void* usr);
560 static void processRequestObjectsUpdatedInteraction(
561 DtRequestObjectsUpdatedInteraction
const & interaction,
void* usr);
562 static void processRequestSubscriptionsInteraction(
563 DtRequestSubscriptionsInteraction
const & interaction,
void* usr);
564 static void processRequestObjectInformationInteraction(
565 DtRequestObjectInformationInteraction
const & interaction,
void* usr);
566 static void processRequestInteractionsReceivedInteraction(
567 DtRequestInteractionsReceivedInteraction
const & interaction,
void* usr);
568 static void processRequestObjectsReflectedInteraction(
569 DtRequestObjectsReflectedInteraction
const & interaction,
void* usr);
570 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
571 static void processRequestSyncPointStatusInteraction(
572 DtRequestSyncPointStatusInteraction
const & interaction,
void* usr);
573 static void processRequestSyncPointsInteraction(
574 DtRequestSyncPointsInteraction
const & interaction,
void* usr);
577 static void processRequestFomModuleDataInteraction(
578 DtRequestFomModuleDataInteraction
const & interaction,
void* usr);
579 static void processRequestFederationFomModuleDataInteraction(
580 DtRequestFederationFomModuleDataInteraction
const & interaction,
void* usr);
581 static void processRequestMimDataInteraction(
582 DtRequestMimDataInteraction
const & interaction,
void* usr);
588 static void processChangeAttributeOrderTypeInteraction(
589 DtChangeAttributeOrderTypeInteraction
const & interaction,
void* usr);
590 static void processChangeAttributeTransportationTypeInteraction(
591 DtChangeAttributeTransportationTypeInteraction
const & interaction,
593 static void processChangeInteractionOrderTypeInteraction(
594 DtChangeInteractionOrderTypeInteraction
const & interaction,
void* usr);
595 static void processChangeInteractionTransportationTypeInteraction(
596 DtChangeInteractionTransportationTypeInteraction
const & interaction,
598 static void processDeleteObjectInstanceInteraction(
599 DtDeleteObjectInstanceInteraction
const & interaction,
void* usr);
600 static void processDisableAsynchronousDeliveryInteraction(
601 DtDisableAsynchronousDeliveryInteraction
const & interaction,
void* usr);
602 static void processDisableTimeConstrainedInteraction(
603 DtDisableTimeConstrainedInteraction
const & interaction,
void* usr);
604 static void processDisableTimeRegulationInteraction(
605 DtDisableTimeRegulationInteraction
const & interaction,
void* usr);
606 static void processEnableAsynchronousDeliveryInteraction(
607 DtEnableAsynchronousDeliveryInteraction
const & interaction,
void* usr);
608 static void processEnableTimeConstrainedInteraction(
609 DtEnableTimeConstrainedInteraction
const & interaction,
void* usr);
610 static void processEnableTimeRegulationInteraction(
611 DtEnableTimeRegulationInteraction
const & interaction,
void* usr);
612 static void processFederateRestoreCompleteInteraction(
613 DtFederateRestoreCompleteInteraction
const & interaction,
void* usr);
614 static void processFederateSaveBegunInteraction(
615 DtFederateSaveBegunInteraction
const & interaction,
void* usr);
616 static void processFederateSaveCompleteInteraction(
617 DtFederateSaveCompleteInteraction
const & interaction,
void* usr);
618 static void processFlushQueueRequestInteraction(
619 DtFlushQueueRequestInteraction
const & interaction,
void* usr);
620 static void processLocalDeleteObjectInstanceInteraction(
621 DtLocalDeleteObjectInstanceInteraction
const & interaction,
void* usr);
622 static void processModifyLookaheadInteraction(
623 DtModifyLookaheadInteraction
const & interaction,
void* usr);
624 static void processNextEventRequestInteraction(
625 DtNextEventRequestInteraction
const & interaction,
void* usr);
626 static void processNextEventRequestAvailableInteraction(
627 DtNextEventRequestAvailableInteraction
const & interaction,
void* usr);
628 static void processPublishInteractionClassInteraction(
629 DtPublishInteractionClassInteraction
const & interaction,
void* usr);
630 static void processPublishObjectClassInteraction(
631 DtPublishObjectClassInteraction
const & interaction,
void* usr);
632 static void processResignFederationExecutionInteraction(
633 DtResignFederationExecutionInteraction
const & interaction,
void* usr);
634 static void processSubscribeInteractionClassInteraction(
635 DtSubscribeInteractionClassInteraction
const & interaction,
void* usr);
636 static void processSubscribeObjectClassAttributesInteraction(
637 DtSubscribeObjectClassAttributesInteraction
const & interaction,
639 static void processSynchronizationPointAchievedInteraction(
640 DtSynchronizationPointAchievedInteraction
const & interaction,
642 static void processTimeAdvanceRequestInteraction(
643 DtTimeAdvanceRequestInteraction
const & interaction,
void* usr);
644 static void processTimeAdvanceRequestAvailableInteraction(
645 DtTimeAdvanceRequestAvailableInteraction
const & interaction,
void* usr);
646 static void processUnconditionalAttributeOwnershipDivestitureInteraction(
647 DtUnconditionalAttributeOwnershipDivestitureInteraction
const & interaction,
649 static void processUnpublishInteractionClassInteraction(
650 DtUnpublishInteractionClassInteraction
const & interaction,
void* usr);
651 static void processUnpublishObjectClassInteraction(
652 DtUnpublishObjectClassInteraction
const & interaction,
void* usr);
653 static void processUnsubscribeInteractionClassInteraction(
654 DtUnsubscribeInteractionClassInteraction
const & interaction,
void* usr);
655 static void processUnsubscribeObjectClassInteraction(
656 DtUnsubscribeObjectClassInteraction
const & interaction,
void* usr);
666 DtMomInspector* myInspector;
669 DtMomServices* myServiceManager;
672 DtMomInteractionFactory* myFactory;
675 DtMomInterCbMgr* myCallbackMgr;
678 std::set<DtInteractionClassHandle> myPublishedInteractions;
681 DtMomFederatePublisher* myFederatePublisher;
684 DtMomFederationPublisher* myFederationPublisher;
687 DtMomHandleList myFederateList;
690 bool myServiceReporting;
693 bool myExceptionLogging;
696 unsigned long myAlertCount;
699 unsigned long myReportServiceID;
705 bool myMomInvocation;
708 DtMomObserver* myMomObserver;
711 DtMomWrapper* myMomWrapper;
750 std::auto_ptr < rti1516::LogicalTime > myTime;
751 std::auto_ptr < rti1516::LogicalTimeInterval > myInterval;
752 std::auto_ptr < rti1516::LogicalTime > myNullTime;
753 std::auto_ptr < rti1516::LogicalTimeInterval > myNullInterval;
755 #elif defined(DtIFSPEC1516E)
767 std::auto_ptr < rti1516e::LogicalTime > myTime;
768 std::auto_ptr < rti1516e::LogicalTimeInterval > myInterval;
769 std::auto_ptr < rti1516e::LogicalTime > myNullTime;
770 std::auto_ptr < rti1516e::LogicalTimeInterval > myNullInterval;
781 DtHandle myFederateServiceRegion[DtServiceGroupMax];
785 std::auto_ptr < RTI::FedTime > myTime;
786 std::auto_ptr < RTI::FedTime > myInterval;
787 std::auto_ptr < RTI::FedTime > myNullTime;
788 std::auto_ptr < RTI::FedTime > myNullInterval;
793 MAKRti::DtTime myBeginAdvancingTime;
796 MAKRti::DtTime myBeginGrantedTime;
799 unsigned long myGrantedTime;
802 unsigned long myAdvancingTime;
805 MAKRti::DtClock myClock;
810 static DtMomMgrCreator theCreator;