MAK RTIspy API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
execFedMgr.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: execFedMgr.h,v $ $Revision: 1.58 $ $State: Exp $
7 *********************************************************************/
8 
9 #ifndef execFedMgr_H_
10 #define execFedMgr_H_
11 
14 
15 
16 #include <rtiMsConfig.h>
17 #include <fedMgr.h>
18 #include <syncPointMsg.h>
19 #include <resBegMsg.h>
20 #include <creRespMsg.h>
21 #include <desRespMsg.h>
22 #include <joinRespMsg.h>
23 #include <joinConfMsg.h>
24 #include <savRespMsg.h>
25 #include <fomModuleRequestMsg.h>
27 #include <ridFileTester.h>
28 #include <fileDistributor.h>
29 #include <newFomClassesMsg.h>
30 #include <resignRespMsg.h>
31 #include <rtiApiTypes.h>
32 
33 #include <mtl/fedReader13.h>
34 #include <mtl/fedReader1516.h>
35 #include <mtl/fedReader1516e.h>
36 
37 #include <vector>
38 #include <set>
39 
40 class DtSyncPointMsg;
42 class DtSaveStatusMsg;
43 class DtRestoreStatusMsg;
44 class DtSaveFinishedMsg;
45 class DtSaveInitiateMsg;
46 class DtRestoreReplyMsg;
47 class DtRestoreEndMsg;
49 class DtRestoreMsg;
52 class DtNameReservedMsg;
53 
54 namespace vrlmod
55 {
56  class DtThreadedObject;
57 }
58 
70 {
71 public:
72 
76  DtConnectionMgr* connMgr,
77  std::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
78 
80  virtual ~DtRtiExecFederateMgr();
81 
82 private:
83 
86 
89 
90 public:
91 
94 
95 
97  virtual void createFederationExecution(
98  const char* executionName, const char* timeImplName,
99 #if defined(DtIFSPEC13) || defined(DtIFSPEC1516)
100  const char* fed);
101 #else
102  const std::vector<DtString>& fomModules,
103  const char* mimModule);
104 #endif
105 
107  virtual void destroyFederationExecution(
108  const char* executionName);
109 
110 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
111  virtual void listFederationExecutions() const;
113 
115  virtual void listFederationMembers(DtString const& federationName) const;
116 #endif
117 
119  virtual RTI_API::FederateHandle joinFederationExecution (
120 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
121  const char* federateName,
122 #endif
123  const char* federateType,
124  const char* executionName,
125 #if defined(DtIFSPEC13) || defined(DtIFSPEC1516)
126  RTI_API::FederateAmbassador* federateAmbassadorReference,
127 #else
128  const std::vector<DtString>& fomModules,
129 #endif
130  unsigned long flags);
131 
133  virtual void resignFederationExecution(RTI_API::ResignAction theAction);
134 
137 
138 
141  char const * label,
142  DtRtiApiTagConstRef theTag);
143 
146  char const * label,
147  DtRtiApiTagConstRef theTag,
148  DtFederateHandleSet const & syncSet);
149 
151  virtual void synchronizationPointAchieved(char const * label, bool successfully=true);
153 
156 
157 
159  virtual void requestFederationSave (char const * label, DtRtiApiTime const * time=NULL);
160 
161 #if !defined(DtIFSPEC13)
162 
164  virtual void queryFederationSaveStatus();
165 
167  virtual void queryFederationRestoreStatus();
168 
169 #if !defined(DtIFSPEC1516)
170 
172  virtual void abortFederationSave();
173 
175  virtual void abortFederationRestore();
176 
177 #endif
178 #endif
179 
181  virtual void federateSaveBegun ();
182 
184  virtual void federateSaveComplete ();
185 
187  virtual void federateSaveNotComplete ();
188 
190  virtual void requestFederationRestore ( const char *label);
191 
193  virtual void federateRestoreComplete ();
194 
196  virtual void federateRestoreNotComplete ();
198 
201  DtSynchronousFileDistributor* distributor(const char* executionName);
202 
204 
205  DtSynchronousFileDistributor* joinDistributor();
206  DtSynchronousFileDistributor* joinDistributor() const;
208 
209 
211  virtual void init();
212 
213 protected:
214 
216  virtual void initRidTester();
217 
219  virtual void waitForCreateResponse( const char* executionName );
220 
222  virtual void waitForJoinResponse( const char* executionName,
223  std::vector<MAKRti::DtString> &joinModules );
224 
226  virtual void waitForResignResponse(bool serviceCall = true);
227 
229  virtual void waitForReserveNameResponse(bool serviceCall = true);
230 
232  void handleFailedJoinResponse(bool timedOutDueToCreation);
233 
235  virtual void initializeTimeFactory();
236 
238  virtual void initializeFOM( const char* executionName );
239 
241  virtual void initializeLocalFOM(const char* executionName);
242 
244  virtual void initializeDistributedFOM(const char* executionName);
245 
246 
249  virtual void postJoinInit(
250  const char* federateType,
251  const char* executionName,
252  const char* federateName
253 #if defined(DtIFSPEC13) || defined(DtIFSPEC1516)
254  , RTI_API::FederateAmbassador* federateAmbassadorReference
255 #endif
256  );
257 
260  virtual void postJoinConfirmInit();
261 
263  virtual void handleFailedJoin(unsigned long sourceID,
265 
267  virtual void setDesignatedFederate(bool isDesignated);
268  virtual bool isDesignatedFederate();
269 
273 
274 
276  virtual void processSyncPointMsg(const DtSyncPointMsg& msg);
277 
279  virtual void processDesignatedFederateMsg(const DtDesignatedFederateMsg& msg);
280 
282  virtual void processFomModuleFileRequestMsg(const DtFomModuleRequestMsg& msg);
283 
285  virtual void processCreateResponseMsg(const DtCreateResponseMsg& msg);
286 
288  virtual void processReportFederationsMsg(const DtReportFederationsMsg& msg);
289 
291  virtual void processReportFederationMembersMsg(const DtReportFederationMembersMsg& msg);
292 
294  virtual void processJoinResponseMsg(const DtJoinResponseMsg& msg);
295 
297  virtual void processDestroyResponseMsg(const DtDestroyResponseMsg& msg);
298 
300  virtual void processSaveInitiate(const DtSaveInitiateMsg& msg);
301 
303  virtual void processSaveInitiate(const char* label);
304 
306  virtual void requestImmediateSave(const char *label);
307 
309  virtual void processSaveResponse(const DtSaveResponseMsg& msg);
310 
312  virtual void processSaveFinished(const DtSaveFinishedMsg& msg);
313 
315  virtual void processRestoreReply(const DtRestoreReplyMsg& msg);
316 
318  virtual void processRestoreEnd(const DtRestoreEndMsg& msg);
319 
321  virtual void processRestoreInitiate(const DtRestoreInitiateMsg& msg);
322 
324  virtual void processRestore(const DtRestoreMsg& msg);
325 
326 #if !defined(DtIFSPEC13)
327  virtual void processSaveStatusMsg(const DtSaveStatusMsg& msg);
329 
331  virtual void processRestoreStatusMsg(const DtRestoreStatusMsg& msg);
332 #endif
333 
336  virtual void processNewFomClassesMsg(const DtNewFomClassesMsg& msg);
337 
339  virtual void processResignResponseMsg(const DtResignRespMsg& msg);
340 
342  virtual void processRegisterNameMsg(const DtNameReservedMsg& msg);
343 
345 
347  virtual void testSaveProgress() const;
348 
350  virtual void applyRidParameters();
351 
356  virtual void processNewFomClasses(const DtNewFomClassesMsg& msg);
357 
358 
361 
362 
364  virtual void sendCreateMsg(MAKRti::DtString const & fedExNameVal,
365  MAKRti::DtString const & timeImplName, const std::vector<unsigned int> & moduleCrcs,
366  MAKRti::DtFomType fedType, MAKRti::DtString const &momModuleName,
367  const std::vector<MAKRti::DtString>& fomModules, unsigned int momModuleCrc);
368 
370  virtual void sendDestroyMsg(const char* name);
371 
373  virtual void sendJoinMsg(
374  unsigned long sourceID, unsigned short requestID, const char* fedType,
375  const char* fedExName, const char* fedName,
376  const std::vector<MAKRti::DtString>& fomModules,
377  const unsigned long flags, const std::vector<unsigned int>& joinModulesCrcs);
378 
380  virtual void sendJoinConfirmMsg(
381  unsigned long sourceID, DtJoinConfirmMsg::errorCodes errorCode);
382 
384  virtual void sendSyncPointMsg(DtSyncMsgType kind, DtFederateHandle& id,
385  char const * name,
386  DtRtiApiTagConstPtr tag = NULL,
387  DtFederateHandleSet const * set = NULL);
388 
389 #if defined(DtTIME)
390  virtual void sendSaveRequestTsoMsg(char const * label,
392  DtRtiApiTime const * time);
393 #endif
394 
396  virtual void sendSaveRequestMsg(unsigned long requestID, const char *label);
397 
399  virtual void sendSaveBegunMsg();
400 
402  virtual void sendSaveCompleteMsg(const char *label, bool success);
403 
405  virtual void sendRestoreRequestMsg(const char *label);
406 
408  virtual void sendRestoreBegunMsg(const char *label, DtResponseFlag response);
409 
411  virtual void sendRestoreCompleteMsg(const char *label, bool success);
413 
416 
417 
420  virtual void initiateSave();
421 
424  virtual void initiateTimedSave(DtRtiApiTime const& saveTime);
425 
428  virtual bool saveLRC(DtRtiSaveFile& saveFile);
429 
431  virtual bool save(DtRtiSaveFile& file);
432 
435  virtual void prepareToRestoreLRC();
436 
439  virtual bool restoreLRC(DtRtiSaveFile& saveFile);
440 
442  virtual void prepareToRestore();
443 
445  virtual bool restore( DtRtiSaveFile& file );
447 
449  virtual void posttick();
450 
451 public:
452 
455 
456 
458  static void processSyncPointMsg(const DtSyncPointMsg& msg, void* usr);
459 
461  static void processDesignatedFederateMsg(const DtDesignatedFederateMsg& msg, void* usr);
462 
464  static void processFomModuleFileRequestMsg( const DtFomModuleRequestMsg& msg, void* usr);
465 
467  static void processCreateResponseMsg(const DtCreateResponseMsg& msg, void* usr);
468 
470  static void processReportFederationsMsg(const DtReportFederationsMsg& msg, void* usr);
471 
473  static void processReportFederationMembersMsg(const DtReportFederationMembersMsg& msg, void* usr);
474 
476  static void processJoinResponseMsg(const DtJoinResponseMsg& msg, void* usr);
477 
479  static void processDestroyResponseMsg(const DtDestroyResponseMsg& msg, void* usr);
480 
481 #if !defined(DtIFSPEC13)
482  static void processSaveStatusMsg(const DtSaveStatusMsg& msg, void* usr);
484 
486  static void processRestoreStatusMsg(const DtRestoreStatusMsg& msg, void* usr);
487 #endif
488 
491  static void processNewFomClassesMsg(const DtNewFomClassesMsg& msg, void* usr);
492 
494  static void processResignResponseMsg(const DtResignRespMsg& msg, void* usr);
495 
497  static void processRegisterNameMsg(const DtNameReservedMsg& msg, void* usr);
498 
500 
501 
503  static DtFederateMgr* create(DtRIDParameters* params,
504  DtRtiAmbassadorBaseImplementor* ambImplPtr,
505  DtConnectionMgr* connMgr,
506  std::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
507 
508 protected:
509 
511  std::map<DtString, DtSynchronousFileDistributor*> myDistributors;
512 
515 
518 
521 
524 
528 
530  MAKRti:: DtString myCreateResponseErrorString;
531 
534 
537 
540 
542  MAKRti::DtString myDestroyExecutionName;
543 
545  std::map<DtString, bool> myFedFileRequests;
546 
548  std::vector<MAKRti::DtString> myFomModuleRequests;
549 
551  unsigned short myJoinRequestID;
552 
554  unsigned long mySaveRequestID;
555 
558 
563  std::set<DtString> mySyncPoints;
564 
566 #if defined(DtIFSPEC13)
567  std::string* myFailedSyncPointLabel;
568 #else
569  std::wstring* myFailedSyncPointLabel;
570 #endif
571 
576 
580 
581 
585 
587  std::list<DtNewFomClassesMsg*> myNewFomClassMsgs;
588 
590  MAKRti::DtString myHostname;
591 
592 };
593 
594 #endif
595 
596 
597 
unsigned long mySaveRequestID
Save request ID.
Definition: execFedMgr.h:554
This class is a base for the protocol specific DtRtiAmbassadorImplementor class.
Definition: ambImpBase.h:50
Definition: savFinMsg.h:32
DtFederateHandle myOldFedHandle
during a restore the fedhandle changes.
Definition: execFedMgr.h:575
DtResignResponse myResignResponse
Status of resign federation.
Definition: execFedMgr.h:520
Definition: newFomClassesMsg.h:18
Definition: joinRespMsg.h:28
Definition: savRespMsg.h:29
std::list< DtNewFomClassesMsg * > myNewFomClassMsgs
Queue of FOM class messages to be processed after we join.
Definition: execFedMgr.h:587
DtDestroyResponseFlag
Definition: desRespMsg.h:23
virtual bool restore(DtRtiSaveFile &file)
Perform the actual restore.
Definition: fedMgr.h:424
virtual void processRestoreEnd(const DtRestoreEndMsg &msg)
Process restore end message.
virtual void synchronizationPointAchieved(const char *label, bool successfully=true)=0
Process the synchronization point achieved service.
This class manages the RTI&#39;s start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
virtual void requestFederationRestore(const char *label)=0
Process the request federation restore service.
DtSaveResponseFlag mySaveResponse
Save response status.
Definition: execFedMgr.h:557
Definition: restoreStatusMsg.h:33
unsigned myRegisterNameResponse
Status of registerName 0 = no response, 1 = success, 2 = failure.
Definition: execFedMgr.h:527
Definition: nameReservedMsg.h:25
bool myIsDesignatedFederate
This federate LRC is designated for handling some federation wide tasks (e.g., MOM Federation attribu...
Definition: execFedMgr.h:579
virtual void processSaveFinished(const DtSaveFinishedMsg &msg)
Process save finished message.
DtRtiApiVariableLengthData const * DtRtiApiTagConstPtr
Definition: rtiApiTypes.h:99
static DtFederateMgr * create(DtRIDParameters *params, DtRtiAmbassadorBaseImplementor *ambImplPtr, DtConnectionMgr *connMgr, std::shared_ptr< DtRtiAssistantLrcClient > assistantClient)
A Federate Manager instance is created, initialized, and its pointer is returned. ...
DtSaveResponseFlag
Definition: savRespMsg.h:22
vrlmod::DtThreadedObject * myDistributorThread
Should we use local or distributed fed file?
Definition: execFedMgr.h:583
virtual void createFederationExecution(const char *executionName, const char *timeImplName, const std::vector< DtString > &fomModules, const char *mimModule)=0
Process the create federation execution service.
virtual void waitForResignResponse(bool serviceCall=true)
Wait for Resign Response.
virtual void init()
Virtual initialization within create.
Definition: fedHandleSet.h:61
virtual void processRestore(const DtRestoreMsg &msg)
Process restore message.
virtual void handleFailedJoin(unsigned long sourceID, DtJoinConfirmMsg::errorCodes code)
Handle the join failure before throwing an exception.
bool myFullFedFileDistribution
Definition: execFedMgr.h:589
virtual RTI_API::FederateHandle joinFederationExecution(const char *federateName, const char *federateType, const char *executionName, const std::vector< DtString > &fomModules, unsigned long flags)=0
Process the join federation execution service.
virtual void federateSaveNotComplete()=0
Process the federate save not complete service.
virtual void federateSaveComplete()=0
Process the federate save complete service.
RTI_API::LogicalTime DtRtiApiTime
Typedefs for RTI API types that frequently require conditional precompile directives.
Definition: rtiApiTypes.h:91
MAKRti::DtString myCreateResponseErrorString
Error String of create federation.
Definition: execFedMgr.h:530
bool myAsynchronousDistributor
Definition: execFedMgr.h:584
DtRtiApiVariableLengthData const & DtRtiApiTagConstRef
Definition: rtiApiTypes.h:98
Sent by Federates to request fed file from RtiExec.
Definition: fomModuleRequestMsg.h:24
Definition: resignRespMsg.h:20
virtual void abortFederationRestore()=0
Process the abort federation restore service.
Instances of DtRtiExecFederateMgr process federation-level messages (such as create, destroy, join, resign, and sync points) for HLA applications that are using the rtiexec.
Definition: execFedMgr.h:69
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:93
std::map< DtString, DtSynchronousFileDistributor * > myDistributors
federate Fed File Distributors.
Definition: execFedMgr.h:511
virtual void listFederationExecutions() const =0
Request the list of federation executions.
virtual void federateSaveBegun()=0
Process the federate save begun service.
Definition: creRespMsg.h:36
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:67
std::wstring * myFailedSyncPointLabel
Failed sync point request.
Definition: execFedMgr.h:569
DtHandle DtFederateHandle
Definition: internalTypes.h:46
Definition: syncPointMsg.h:46
Definition: resEndMsg.h:31
virtual void queryFederationSaveStatus()=0
Process the query federation save service.
DtSynchronousFileDistributor * myJoinDistributor
The Fed File Distributor of the joined federation execution.
Definition: execFedMgr.h:514
virtual void processRestoreReply(const DtRestoreReplyMsg &msg)
Process restore reply message.
DtCreateResponseFlag
Definition: creRespMsg.h:23
Definition: reportFederationMembersMsg.h:20
Distributes fomModule files from initiating federate to RtiExec and then from RtiExec to all joining ...
Definition: synchronousFileDistributor.h:27
virtual void processSaveResponse(const DtSaveResponseMsg &msg)
Process save resonse message.
virtual void postJoinInit(const char *federateType, const char *executionName, const char *federateName)
Uses the given information to initialize federate data.
Definition: reportFederationsMsg.h:26
Definition: restoreMsg.h:23
virtual void federateRestoreComplete()=0
Process the federate restore complete service.
virtual void requestFederationSave(const char *label, const DtRtiApiTime *time=NULL)=0
Process the requested federation save service.
virtual void processSaveInitiate(const DtSaveInitiateMsg &msg)
Process save initiate message.
virtual void initiateTimedSave(DtRtiApiTime const &saveTime)
Save is initiated possibly after waiting to enter time advancing state.
virtual void listFederationMembers(DtString const &federationName) const =0
List the list of federates in the joined federation execution.
ResignAction
Definition: datatypes.pb.h:305
std::set< DtString > mySyncPoints
MAKRti::DtHashList of DtStringHashKeys representing synch point names that have been announced to us...
Definition: execFedMgr.h:563
DtFederateMgr & operator=(DtFederateMgr const &)
Assignment not implemented – Assignment Not Allowed!
Definition: resRepMsg.h:24
virtual void waitForReserveNameResponse(bool serviceCall=true)
Wait for Resign Response.
MAKRti::DtString myHostname
Definition: execFedMgr.h:590
Definition: desRespMsg.h:31
DtDestroyResponseFlag myDestroyResponse
Status of destroy federation.
Definition: execFedMgr.h:533
bool myResignResponseNotReceived
Status of resign federation received.
Definition: execFedMgr.h:523
virtual bool save(DtRtiSaveFile &file)
Perform the actual save.
Definition: fedMgr.h:421
#define DT_DLL_LRC
Definition: rtiMsConfig.h:155
virtual void destroyFederationExecution(const char *executionName)=0
Process the destroy federation execution service.
DtJoinConfirmMsg::errorCodes myJoinConfirmResponse
Status of join confirm.
Definition: execFedMgr.h:539
Definition: saveFile.h:21
DtCreateResponseFlag myCreateResponse
Status of create federation.
Definition: execFedMgr.h:517
DtJoinResponseMsg * myJoinResponse
Copy of join response.
Definition: execFedMgr.h:536
virtual void abortFederationSave()=0
Process the abort federation save service.
unsigned short myJoinRequestID
Join request ID.
Definition: execFedMgr.h:551
virtual void applyRidParameters()
Apply RID parameters.
virtual void queryFederationRestoreStatus()=0
Process the query federation restore service.
virtual void federateRestoreNotComplete()=0
Process the federate restore not complete service.
virtual void testSaveProgress() const =0
Perform exception tests on save/restore state.
errorCodes
error codes for the errorValue flag
Definition: joinConfMsg.h:29
virtual void resignFederationExecution(RTI_API::ResignAction theAction)
Process the resign federation execution service.
virtual void initiateSave()
Perform the actual save possibly after waiting to enter time advancing state.
DtSyncMsgType
Definition: syncPointMsg.h:25
MAKRti::DtString myDestroyExecutionName
Name of federation to destroy.
Definition: execFedMgr.h:542
std::vector< MAKRti::DtString > myFomModuleRequests
Queue of modules requested.
Definition: execFedMgr.h:548
Definition: savInitMsg.h:23
Definition: resInitMsg.h:22
virtual void posttick()
std::map< DtString, bool > myFedFileRequests
Status of fed file request.
Definition: execFedMgr.h:545
Definition: desgFedMsg.h:22
virtual void processRestoreInitiate(const DtRestoreInitiateMsg &msg)
Process restore initiate message.
virtual void postJoinConfirmInit()
This file contains the declaration of the base federation manager.
DtResignResponse
Definition: resignRespMsg.h:12
Definition: saveStatusMsg.h:31
virtual void registerFederationSynchronizationPoint(const char *label, RTI_API::VariableLengthData const &theTag)=0
Process the register federation synchronization point service.
DtResponseFlag
Definition: resBegMsg.h:22
Definition: vlThreadedObject.h:45

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)